定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件。
表一:news表
CREATE TABLE [dbo].[news](
[ID] [int] IDENTITY(1,1) NOT NULL,
[title] [nvarchar](50) NULL,
[contents] [nvarchar](50) NULL
)
表二:newsdel记录被删除、被修改过的news信息
CREATE TABLE [dbo].[newsdel](
[ID] [int] IDENTITY(1,1) NOT NULL,
[newsID] [int] NULL,
[title] [nvarchar](50) NULL,
[contents] [nvarchar](50) NULL
)
触发器的基本语法:
create trigger newsdeleted -----创建触发器,名称可以自己随便叫
On news -----表名称,即操作的对象,可多个
for Delete -----事件,一般为Insert , Update , Delete 事件,可多选
As
insert into newsdel(newsID,title,contents) ---------------要执行的sql
select ID,title,contents from Deleted
注意:inserted临时表,表示新插入的信息,也包括新加的和修改后的新信息;
deleted临时表,表示被删除的信息,也包括被修改前的信息
1>把删除的news信息保存在newsdel表中,我们需要一个delete触发器:
create trigger newsdeleted
On news
for Delete
As
insert into newsdel(newsID,title,contents)
select ID,title,contents from Deleted
2>把修改前的news信息保存在newsdel表中,我们需要一个update触发器:
create trigger newsupdated
On news
for update
As
insert into newsdel(newsID,title,contents)
select ID,title,contents from Deleted