触发器:类似于C#中的事件
(当你删除数据或者更新数据的时候都要用到触发器
更新数据时,在数据库中就会有delete表,
在这个表中会保存删除或被更新的数据。
在删除的同时,把删除的数据备份到了delete中)
是一种特殊的存储过程,但是不能
传递参数
触发器是通过事件进行触发而被执行
insetred 表与deleted 表
1.DML触发器
insert delete
2.DDL触发器
create table
建触发器的代码
create trigger triggrName on 表名
after (for)|instead of(替换)
update| insert| delete()
as
begin
....
end
触发器例子:
设计一个触发器,在每次插入数据的时候
都把数据值打印出来。
use School
select * from Class
create trigger tri_Class_after
on Class after insert
as
begin
declare @cId int,
declare @cName varchar(50)
declare @cDesc varchar(50)
--给变量赋值(set select)
select @cId=clsId @cName=cName @cDesc=cDescription
from inserted
print @cId
print @cName
print @cDesc
end
inserted into Class values('3G','哈哈',)
drop trigger tri_Class_after
----------
当删除特定表中的数据备份到另一个表中
1、建一个空表(与那个表结构一样)
select top 0 * into ClassBak from Class
2.创建触发器
create trigger tri_Class_Delete_after
on Class after Delete
as
begin
set identity_insert ClassBak on
insert into ClassBak(clsId,cName,cDescription)
select * from deleted
set identity_insert ClassBak off
end
delete from Class where clsId>=9
替换触发器(instead of)
替换删除操作
create trigger tri_Class_Delete_instead_ of
on Class instead of delete
as
begin
insert into ClassBak select * from deleted
end
delete from ClassBak
select * from ClassBak
select * from Class
delete from Class where clsId=10