觸發器分為行級觸發和語句觸發。行級觸發每影響一行執行一行。語句觸發執行玩語句後觸發一次,不管這條語句會影響多少行,都只觸發一次。預設是語句觸發。其語法規則為:
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 觸發器是當資料庫伺...