.net 流氓
天下无难事,有志者成之;天下无易事,有恒者得之。

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行)
posted on 2011-11-25 09:37  .net 流氓  阅读(491)  评论(0编辑  收藏  举报