1. 程式人生 > >SQL刪除、插入觸發器(trigger)

SQL刪除、插入觸發器(trigger)

createtable aa ([dept_id]int,[inner_code]varchar(6),[ConText]varchar(18))
insert aa
select1,'01','總公司'unionallselect2,'0101','一分公司'unionallselect3,'010101','一分公司第一專案部'unionallselect4,'0102','二分公司'unionallselect5,'010201','二分公司第二專案部'createtable bb ([dpart_id]int,[ConText]varchar(10))
insert bb
select1,'財務辦'union

allselect2,'人力資源部'unionallselect3,'審計部'createtable cc([name]varchar(4),[dept_id]int,[dpart_id]int)
insert cc
select'張三',1,1unionallselect'李四',2,1unionallselect'王二',3,1unionallselect'陳三',4,1unionallselect'王五',5,1select*from aa
select*from bb
select*from cc
--查詢結果
dept_id     inner_code ConText           
----------- ---------- ------------------ 101         總公司
20101       一分公司
3010101     一分公司第一專案部
40102       二分公司
5010201     二分公司第二專案部

(所影響的行數為
5 行)

dpart_id    ConText   
----------- ---------- 1           財務辦
2           人力資源部
3           審計部

(所影響的行數為
3 行)

name dept_id     dpart_id   
---- ----------- ----------- 張三  
11
李四  
21
王二  
31
陳三  
41
王五  
51

(所影響的行數為
5 行)

--建立刪除儲存過程createtrigger dd on cc
fordeleteasdeclare@dept_idintselect@dept_id=dept_id from deleted
deletefrom aa where dept_id=@dept_id--測試deletefrom cc where dept_id=2select*from aa
select*from bb
select*from cc

--查詢結果
(所影響的行數為
1 行)

dept_id     inner_code ConText           
----------- ---------- ------------------ 101         總公司
3010101     一分公司第一專案部
40102       二分公司
5010201     二分公司第二專案部

(所影響的行數為
4 行)

dpart_id    ConText   
----------- ---------- 1           財務辦
2           人力資源部
3           審計部

(所影響的行數為
3 行)

name dept_id     dpart_id   
---- ----------- ----------- 張三   11
王二  
31
陳三  
41
王五  
51

(所影響的行數為
3 行)


--插入觸發器的製作 :createtrigger charu on cc

forinsertasdeclare@dept_idintdeclare@dpart_idintdeclare@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,nullinsert bb select@dpart_id,@namegoinsert cc select'李晗',100,120insert cc select'李晗',100,120select*from aa
select*from bb
select*from cc

------------資料:dept_id     inner_code ConText           
----------- ---------- ------------------ 101         總公司
100NULLNULL3010101     一分公司第一專案部
40102       二分公司
5010201     二分公司第二專案部
100NULLNULL

(所影響的行數為
6 行)

dpart_id    ConText   
----------- ---------- 1           財務辦
2           人力資源部
3           審計部
120         李晗
120         李晗

(所影響的行數為
5 行)

name dept_id     dpart_id   
---- ----------- ----------- 張三   11
李晗  
100120
李晗  
100120
陳三  
41
王五  
51

(所影響的行數為
5 行)