SQL删除、插入触发器(trigger)

来源:互联网 发布:网络开票系统初始密码 编辑:程序博客网 时间:2024/05/16 06:51

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 行)

原创粉丝点击