乙個觸發器

2021-08-23 13:47:23 字數 1468 閱讀 5531

*設計乙個觸發器,當刪除employees中的某個雇員時,刪除orders表中的與這個雇員*/

/*相關的一切記錄。*/

/*********** 第一步、建立儲存過程 ***********/

drop trigger employees_delete

gocreate trigger employees_delete

on employees

instead of delete --此處必須用instead of如果採用for 或update模式,系統會報錯,詳見sql參考

asbegin

--刪除雇員前必須先刪除參照該雇員的所有關係裡的紀錄

--1、先刪除訂單明細表裡,該雇員所下訂單的明細

delete [order details] from orders inner join deleted on orders.employeeid=deleted.employeeid

where orders.orderid=[order details].orderid

--2、再刪除訂單表裡,該雇員所下的訂單

delete orders from deleted

where orders.employeeid=deleted.employeeid

--3、刪除employeeterritories表裡該雇員的資訊

delete employeeterritories from deleted

where employeeterritories.employeeid=deleted.employeeid

--4、刪除雇員表裡該雇員的資訊,由於前面使用的是instead of模式,此處必須有,否則雇員表裡的資料沒有被刪除

delete employees from deleted

where employees.employeeid=deleted.employeeid

end

go/*********** 第二步、執行刪除操作,比較刪除前後各表記錄數的變化 ***********/

--1、檢視刪除資料前各表的記錄數

select count(*) from employees

select count(*) from employeeterritories

select count(*) from orders

select count(*) from [order details]

--2、執行刪除9號雇員的命令

delete employees where employeeid =9

--3、檢視刪除資料前各表的記錄數

select count(*) from employees

select count(*) from employeeterritories

select count(*) from orders

select count(*) from [order details]

乙個觸發器的例子

create or replace trigger usremhr trg sq rule insert before insert on sq rule base for each row declare temp rule id varchar2 10 temp rul theme id var...

乙個簡單的觸發器

觸發器是與表有關的資料庫物件,在滿足定義條件時觸發,並執行觸發器中定義的語句集合。觸發器的特性 1 有begin end體,begin end 之間的語句可以寫的簡單或者複雜 2 什麼條件會觸發 i d u 3 什麼時候觸發 在增刪改前或者後 4 觸發頻率 針對每一行執行 5 觸發器定義在表上,附著...

乙個簡單的觸發器 Demo

背景 常見的表會有乙個updatedate欄位,用來標示表中資料最近一次被更新的時間 該功能可由程式實現 不再贅述 也可以由觸發器實現 use test go object trigger dbo autodatemodified script date 04 12 2010 17 37 43 se...