sql触发器例子
createtable aa ([dept_id]int,[inner_code]varchar(6),[ConText]varchar(18))
insert aa
select1,'01','总公司'unionall
select2,'0101','一分公司'unionall
select3,'010101','一分公司第一项目部'unionall
select4,'0102','二分公司'unionall
select5,'010201','二分公司第二项目部'
createtable bb ([dpart_id]int,[ConText]varchar(10))
insert bb
select1,'财务办'unionall
select2,'人力资源部'unionall
select3,'审计部'
createtable cc([name]varchar(4),[dept_id]int,[dpart_id]int)
insert cc
select'张三',1,1unionall
select'李四',2,1unionall
select'王二',3,1unionall
select'陈三',4,1unionall
select'王五',5,1
select*from aa
select*from bb
select*from cc
--查询结果
dept_id inner_code ConText
----------- ---------- ------------------
1 01 总公司
2 0101 一分公司
3 010101 一分公司第一项目部
4 0102 二分公司
5 010201 二分公司第二项目部
(所影响的行数为 5行)
dpart_id ConText
----------- ----------
1 财务办
2 人力资源部
3 审计部
(所影响的行数为 3行)
name dept_id dpart_id
---- ----------- -----------
张三 1 1
李四 2 1
王二 3 1
陈三 4 1
王五 5 1
(所影响的行数为 5行)
--创建删除存储过程
createtrigger dd on cc
fordelete
as
declare @dept_idint
select@dept_id=dept_id from deleted
deletefrom aa where dept_id=@dept_id
--测试
deletefrom cc where dept_id=2
select*from aa
select*from bb
select*from cc
--查询结果
(所影响的行数为 1行)
dept_id inner_code ConText
----------- ---------- ------------------
1 01 总公司
3 010101 一分公司第一项目部
4 0102 二分公司
5 010201 二分公司第二项目部
(所影响的行数为 4行)
dpart_id ConText
----------- ----------
1 财务办
2 人力资源部
3 审计部
(所影响的行数为 3行)
name dept_id dpart_id
---- ----------- -----------
张三 1 1
王二 3 1
陈三 4 1
王五 5 1
(所影响的行数为 3行)
--插入触发器的制作
createtrigger charu on cc
forinsert
as
declare@dept_idint
declare@dpart_idint
declare@namevarchar(10)
select@dept_id=dept_id from inserted
select@dpart_id=dpart_id from inserted
select@name=name from inserted
insert aa select@dept_id,null,null
insert bb select@dpart_id,@name
go
insert cc select'刘风',100,120
insert cc select'刘风',100,120
select*from aa
select*from bb
select*from cc
--数据
dept_id inner_code ConText
----------- ---------- ------------------
1 01 总公司
100 NULL NULL
3 010101 一分公司第一项目部
4 0102 二分公司
5 010201 二分公司第二项目部
100 NULL NULL
(所影响的行数为 6行)
dpart_id ConText
----------- ----------
1 财务办
2 人力资源部
3 审计部
120 刘风
120 刘风
(所影响的行数为 5行)
name dept_id dpart_id
---- ----------- -----------
张三 1 1
刘风 100 120
刘风 100 120
陈三 4 1
王五 5 1
(所影响的行数为 5行)