欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

數(shù)據(jù)庫觸發(fā)器Trigger詳解

 更新時間:2025年05月19日 09:53:05   作者:小嘟嘟2679  
在數(shù)據(jù)庫管理系統(tǒng)中,觸發(fā)器(Trigger)是一種特殊的存儲過程,它在特定的事件發(fā)生時自動執(zhí)行,本文給大家介紹數(shù)據(jù)庫觸發(fā)器Trigger的相關(guān)知識,感興趣的朋友一起看看吧

在數(shù)據(jù)庫管理系統(tǒng)中,觸發(fā)器(Trigger)是一種特殊的存儲過程,它在特定的事件發(fā)生時自動執(zhí)行。觸發(fā)器通常用于維護數(shù)據(jù)的完整性和一致性。通過事件觸發(fā)而被執(zhí)行,不能直接調(diào)用。

觸發(fā)器的三要素

觸發(fā)事件 before/after(insert、update、delete)

觸發(fā)條件 when

觸發(fā)動作 begin ... end

觸發(fā)器的分類

根據(jù)觸發(fā)時機和觸發(fā)事件的不同,觸發(fā)器可以分為以下幾種類型:行級觸發(fā)器與語句級觸發(fā)器

行級觸發(fā)器(Row-Level Trigger)在每一行數(shù)據(jù)受到影響時觸發(fā),例如在插入、更新或刪除某一行數(shù)據(jù)時。

語句級觸發(fā)器(Statement-Level Trigger)則在執(zhí)行一條SQL語句時觸發(fā),無論該語句影響了多少行數(shù)據(jù)。

創(chuàng)建觸發(fā)器

SQL> creagte trigger <觸發(fā)器名>  [{before | after}]
{[inster | delete | update of 列名列表] }
on 表名
[ referencing <臨時視圖名>]
[ when <觸發(fā)條件>]
<觸發(fā)動作>
end [觸發(fā)器名]

說明:

update: 指明是update觸發(fā)器,每當update語句修改由of子句指定的列時,激發(fā)觸發(fā)器。如果忽略of子句,每當update修改表的任意列值時,都將激發(fā)觸發(fā)器。

referencing <臨時視圖名>:指定臨時視圖別名,在觸發(fā)器運行過程中,系統(tǒng)會生成另個臨時視圖分別存放被更新值舊值和新值(rollback用)。對于行級觸發(fā)器,默認臨時視圖名分別為old和new;對于語句級觸發(fā)器,默認臨時視圖名分別為old-table和new-table。

例如:

行級觸發(fā)器

觸發(fā)器中還可以回退修改使用rollback

SQL> create trigger bad_trg after update of balance on users
referencing new row as nrow, old row as orow
for each row
when nrow.balance < 0
begin
rollback
# 插入不良記錄
insert into bads select concat(borrows.userid, convert(varchar(100), getdate(), 10)), borrows.userid, brid, getdate()  from borrows  when nrow.userid = borrows.userid and etime is null
end

語句級觸發(fā)器

SQL> create trigger RAISE_LIMIT after update of SAL on EMP
referencing new table as n_tb,  old table as o_tb
for each statement
when (800 > (select avg(SAL) from EMP)
begin
delete from EMP where ENO in ( select ENO from n_tb ) insert into EMP ( select * from o_tb )
end

修改觸發(fā)器

SQL> alter  trigger bad_trg  after  update on users
AS
BEGIN
    -- 新的觸發(fā)器邏輯
    PRINT 'Employee record has been updated.'
    -- 可以添加更多的邏輯,例如記錄日志或執(zhí)行其他操作
END

刪除觸發(fā)器

SQL> drop  trigger bad_trg

到此這篇關(guān)于數(shù)據(jù)庫觸發(fā)器Trigger的文章就介紹到這了,更多相關(guān)數(shù)據(jù)庫觸發(fā)器Trigger內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論