巢狀觸發器
當某一觸發器執行時,能夠觸發另乙個觸發器,這種情況下稱之為觸發器巢狀。在執行過程中,如果乙個觸發器修改某個表時,而這個表有其他觸發器,這時就使用了巢狀觸發器。在sql server 中,觸發器能夠巢狀至32層。如果不需要巢狀觸發器,可以通過sp_configure 選項進行設定。
oracle 不支援巢狀觸發器
建立delete 觸發器a_delete,實現每次只能從author 表中刪除一條記錄,同時刪除book表中與之對應的記錄。為book 表建立delete觸發器 b_delete,每次只能刪除book表中的一條記錄。實現**如下:
create trigger a_delete
on author
for delete as
declare @rowcount int
select @rowcount = @@rowcount
if @rowcount>1
begin
rollback transaction
raiserror('當前要刪除的記錄數為%d,一次只允許刪除一行記錄!',16,1,@rowcount)
endelse
declare @author char(8)
select @author = author
from deleted
delete book
where author = @author
create trigger b_delete
on book
for delete as
declare @rowcount int
select @rowcount = @@rowcount
if @rowcount>1
begin
rollback transaction
raiserror('當前要刪除的記錄數為%d,一次只允許刪除一行記錄!',16,1,@rowcount)
endelse
print 'author 表和book 表中相應的資料均被刪除'
遞迴觸發器
sp_dboption 'dbname','recursive triggers',true
dbname 為資料庫名。如果把最後的引數由「true」變為「false」,則為禁止資料庫直接遞迴操作。
巢狀表替代觸發器
create or replace type emp obj as object emp表中所有的字段。create or replace type emp tab type as table of emp obj create or replace view dept emp view as se...
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...
觸發器(五 復合觸發器)
oracle11g開始提供了一種復合觸發器,簡單的說就是支援把語句級和行級觸發器組合在一起。實際應用場景不多,這裡就做個記錄。與單個觸發器語法有所區別 1.單個觸發器的頭部是 before after 動作 on 物件 for 觸發級別 而組合觸發器的頭部是 for 動作 on 物件 compoun...