SQL触发器编写问题

yunxiang17146 2010-04-30 11:19:42
Create Table Student( --学生表
StudentID int primary key, --学号
....
)

Create Table BorrowRecord( --学生借书记录表
BorrowRecord int identity(1,1), --流水号
StudentID int , --学号
BorrowDate datetime, --借出时间
ReturnDAte Datetime, --归还时间
...
)

用到的功能有:
1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
等等。

这时候可以用到触发器。对于1,创建一个Update触发器:

Create Trigger truStudent
On Student --在Student表中创建触发器
for Update --为什么事件触发
As --事件触发后所要做的事情
if Update(StudentID)
begin

Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i --Deleted和Inserted临时表
Where br.StudentID=d.StudentID

end


接下来我要提问了,
1.From BorrowRecord br , Deleted d ,Inserted i 这一句什么用?
2.Set StudentID=i.StudentID 里,studentID前面的i.是什么意思?
3.Where br.StudentID=d.StudentID同样前面的br和d.什么意思?
...全文
74 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2010-05-01
  • 打赏
  • 举报
回复
接下来我要提问了,
1.From BorrowRecord br , Deleted d ,Inserted i 这一句什么用?

触发器综述(Haiwer)
http://topic.csdn.net/u/20081005/11/57061a18-c234-40ee-ba4b-1f4c3bc7f09a.html

T-MAC学习笔记19之--浅谈触发器
http://topic.csdn.net/u/20091203/20/ef22e48d-4560-437e-9500-6efa4044284d.html?41106

2.Set StudentID=i.StudentID 里,studentID前面的i.是什么意思?
别名.实际指的是inserted表.

3.Where br.StudentID=d.StudentID同样前面的br和d.什么意思?
br和d都是别名.
br 对应BorrowRecord表,d 对应deleted表.

这些都是基本知识.你得多看看联机帮助了.
duanzhi1984 2010-04-30
  • 打赏
  • 举报
回复
你的语句是自己写的嘛!

1、感觉这个触发器并没有实现你的问题
2、i 是 Inserted 的别名
3、BorrowRecord br , Deleted d 别名

你要多看看SQL基础。。。
永生天地 2010-04-30
  • 打赏
  • 举报
回复
1.From BorrowRecord br , Deleted d ,Inserted i 这一句什么用?
Deleted 和 Inserted 是触发器的两个临时表,deleted记录了修改和删除的记录,inserted记录了新增和修改的记录,而在update触发器上这两个表则分别记录了修改前的记录(deleted)和修改后的记录(inserted)

2.Set StudentID=i.StudentID 里,studentID前面的i.是什么意思?i是给inserted表起的别名
3.Where br.StudentID=d.StudentID同样前面的br和d.什么意思? d给deleted表的别名


34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧