触发器修改与删除的操作.

sunly 2006-07-25 04:45:32
表A中修改记录时,将修改前的记录插入表B,如果符合某种条件,将修改后的记录插入表C

表A删除记录时,将此记录插入表B,如果符合某种条件,将此记录从表C中删除.
...全文
148 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2006-07-25
  • 打赏
  • 举报
回复
寫下同一個裡面也可以,但不見得更優
sunly 2006-07-25
  • 打赏
  • 举报
回复
只能建不同的触发器了,我原本打算写到一个里面.
paoluo 2006-07-25
  • 打赏
  • 举报
回复
Create Trigger TR_WhenUpdate On A
For Update
As
Begin
Insert B Select * From Deleted
Insert C Select * From Inserted Where 條件
End
GO
Create Trigger TR_WhenDelete On A
For Delete
As
Begin
Insert B Select * From Deleted
Delete T1 From C T1 Inner Join Deleted T2 On 關聯條件 Where 條件
End
GO
定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 我为什么要使用触发器?比如,这么两个表: 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 理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。 一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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