資料庫觸發器的運用

2021-07-22 09:24:24 字數 1315 閱讀 8960

觸發器分為行級觸發和語句觸發。行級觸發每影響一行執行一行。語句觸發執行玩語句後觸發一次,不管這條語句會影響多少行,都只觸發一次。預設是語句觸發。其語法規則為:

create [or

replace] trigger

after|before|instand of

[insert

orupdate [of column_name] or

delete]

on[referrncing old as old / new as new]

[for

each

row]

[when (condition)]

pl/sql block

觸發器中使用pl/sql語句可以輕鬆可靠地實現許多複雜的功能,我在這裡使用的主要是dml觸發器。

下面是幾個簡單的小案例:

對於主鍵編號的修改(自動增長列:t0001-t???)

create

orreplace

trigger tri_ts1_tid

before

insert

on ts1

foreach

rowbegin

select

't'||substr(seq_ts1_tid.nextval,2) into :new.tid from dual;

end;

對於主外來鍵的修改

create

orreplace

trigger tri_update

before

update

on dept

foreach

rowbegin

update emp set deptno=:new.deptno where deptno=:old.deptno;

commit;

end;

進行安全校驗

create

orreplace

trigger tri_emp_check

before

update

on emp

foreach

rowwhen(new.sal<3000)

begin

:new.sal := 3000;

--pl/sql 兩種給變數賦值的方式 select .. into .. :=

end;

小結:or replace 可以在觸發器需要更改時節省很多功夫。觸發器的使用需要一定的pl/sql基礎

資料庫觸發器

觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料...

資料庫觸發器

最近做了個觸發器的例子 create trigger tru user on user for update asif update status begin update user set stopflag 1 from inserted where user.userid inserted.us...

資料庫 觸發器

觸發器的概念 是使用者定義在關係表上的一類有事件驅動的特殊過程。一旦定義,任何對錶的增刪改操作均有伺服器自動啟用相應的觸發器,在dbms核心層進行集中的完整性控制。類似於約束,但比約束更靈活。觸發器的分類 dml觸發器 dml data manipulation language 觸發器是當資料庫伺...