sql触发器例子

 

create table aa ([dept_id] int,[inner_code] varchar(6),[ConText] varchar(18)) 
insert aa 
select 1,'01','总公司' union all 
select 2,'0101','一分公司' union all 
select 3,'010101','一分公司第一项目部' union all 
select 4,'0102','二分公司' union all 
select 5,'010201','二分公司第二项目部' 
 
 
create table bb ([dpart_id] int,[ConText] varchar(10)) 
insert bb 
select 1,'财务办' union all 
select 2,'人力资源部' union all 
select 3,'审计部' 
 
 
create table cc([name] varchar(4),[dept_id] int,[dpart_id] int) 
insert cc 
select '张三',1,1 union all 
select '李四',2,1 union all 
select '王二',3,1 union all 
select '陈三',4,1 union all 
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 行)
 
--创建删除存储过程
create trigger dd on cc 
for delete 
as 
declare  @dept_id int 
select @dept_id=dept_id from deleted 
delete from aa where dept_id=@dept_id 
 
--测试
delete from 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 行)
 
 
--插入触发器的制作 
 
create trigger charu on cc 
 
for insert 
 
as 
 
declare @dept_id int 
 
declare @dpart_id int 
 
declare @name varchar(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 2010-04-07 16:30  风乔  阅读(223)  评论(0编辑  收藏  举报

导航