幾個sql觸發器樣例

2021-08-04 03:39:31 字數 2311 閱讀 2394

觸發器雖然在sql標準中有支援,但是幾個資料庫仍然還是具有特殊的語法。筆者試著寫了幾個比較常用的觸發器作為記錄。

使用一下兩個表作為觸發器的使用示例

drop

trigger

ifexists after_insert_trigger;

delimiter $

create

trigger after_insert_trigger

after

insert

on test1

foreach

rowbegin

insert

into test2 values(new.a, new.c, new.d);

end$

delimiter ;

drop

trigger

ifexists after_update_trigger;

delimiter $

create

trigger after_update_trigger

after

update

on test1

foreach

rowbegin

update test2 set c = new.c, d = new.d where test2.a = new.a;

end$

delimiter ;

drop

trigger

ifexists after_delete_trigger;

delimiter $

create

trigger after_delete_trigger

after

delete

on test1

foreach

rowbegin

delete

from test2 where test2.a = old.a;

end$

delimiter ;

在事件之前被執行的觸發器可以作為避免非法更新、插入或刪除的額外約束。為了避免執行非法動作而產生錯誤,觸發器可以採取措施來糾正問題,使更新、插入或刪除合法化。[1]

drop

trigger

ifexists before_insert_trigger;

delimiter $

create

trigger before_insert_trigger

before

insert

on test1

foreach

rowbegin

set new.b = new.b + 1;

end$

delimiter ;

postgresql對觸發器的語法是比較特殊的,需要先定義執行函式,然後在出發器中使用execute procedure來處理執行的行為。

create

orreplace function after_insert_trigger()

returns trigger

as $$

begin

insert

into test2 values(new.a, new.c, new.d);

return null;

end;

$$language plpgsql;

drop

trigger

ifexists after_insert_trigger on test1;

create

trigger after_insert_trigger

after

insert

on test1

foreach

rowexecute

procedure after_insert_trigger();

其他行為語法均與上面例子相似,筆者便不再贅述。

[1] abraham silberschatz, henry f.korth s.sudarshan. 資料庫系統概念.楊冬青, 李紅燕, 唐世渭等譯. 北京. 機械工業出版社.2012.103-103.

讚賞

支付寶

sql 觸發器 直接遞迴觸發器

create trigger dbo loving20000 on dbo s for delete asdeclare age int select age sage from deleted delete s where sage age delete from s where sname xq...

sql 觸發器 儲存過程 觸發器(3 3)

1 what?什麼是觸發器 trigger 前兩篇介紹了儲存過程,儲存過程可以理解為sql語句集。那麼觸發器就是一種特殊的儲存過程,也就是一群特殊的sql語句集。特殊在哪?從上文得知,儲存過程是依賴名字才被呼叫的。不僅是儲存過程,我們常用的方法等,大部分也是先知道名字,才能去使用。就像吃飯採用訂外賣...

SQL之觸發器

觸發器是一種不帶引數特殊的儲存過程,有使用者定義,資料庫系統根據一定的條件自動執行 sql觸發器大體上可以分為4種 insert 觸發器 在對錶進行資料錄入的時候觸發 delete 觸發器 刪除表中的資料的時候觸發 instead of 觸發器 此類觸發器建立在檢視之上,用來替代相應的動作,比如de...