對於觸發器,我個人感覺能很好的解決兩個關聯表的資料關係,當乙個表改變的時候,所設定的觸發就會根據觸發器裡面的條件來改變要改變表的資料,
主要還是ddl(insert,delete,update)在其前面還要加上是(after , before),來判斷是在之前還是之後。
乙個簡單的觸發器是這樣的,比方有乙個emp表,表的結構為:
create table emp
(id number(4,0),
name varchar2(50 byte) not null enable,
age number(11,0),
salary number(7,2),
marry char(1 byte),
birthday date,
last_login_time date }
在來乙個相同 的表:
create
table emp_my as
select
*from emp where1=2;
下面就建乙個觸發器,是當刪除emp表中的資料時把這個刪除的資料放到emp_my表裡面,
create or replace trigger trigger_name
before delete -- 這個意思是在刪除之前來執行這個觸發 器。
on emp --- on 是必須要的 emp是你想操作的表,
begin
insert into emp_my (column ,....) values (:old.column,....);
end;
觸發器的一般語法:
create
[or replace]
trigger trigger_name
-- 這個選其一
這個是ddl動作,後面的是你所要執行的表中的字段,
[or ...] 這個是你可以在三種動作中使用這個觸發器, 中間用 or來 連線
on[schema.]table_name |
[schema.]view_name ---- 這個是在做動作的表名
[referencing ]
[for each row ] ---- 這個是代表是行觸發器
[when condition] 這個是你執行表,在什麼條件下來觸發這個觸發器 條件
pl/sql_block | call procedure_name; --- 你所想要執行這個觸發器之後得到的結果。用sql來表達出來
這個就是最簡單的乙個觸發器。
還要了解更深的:請點這個:
oracle序列觸發器簡單實現示例
建立oracle主鍵自增長 1.建表 create table test id number 10 primary key,name varchar2 20 2.建立序列 create sequence test sequence minvalue 1 自增最小值 maxvalue 9999999 ...
oracle 觸發器簡單例項
語法格式 create or replace trigger 觸發器名字 before after insert delete update 這個不能寫select on 表 在那張表建立觸發器 for each row 行觸發器 declare 申明 變數申明塊 begin 執行語句塊 end 條...
Oracle觸發器簡單示例
首先建立兩張測試表 create table test t id number 4 t name varchar2 20 t age number 2 t char create table test log caozuo varchar2 20 tdate date 然後建立觸發器並且進行測試 c...