1 oracle中觸發器是當進行操作時觸發事情,進行處理。例如進行對資料表進行插入、更新和刪除時進行觸發事情處理。
定義觸發器的是:create or replace trigger ***
before|after insert |update|delete
on 資料庫表名
for each row --這是表示對每一行操作都會觸發事件
begin
sql語句;
end;
如: create or replace trigger test4_t
after delete
on demo
for each row
begin
dbms_output.put_line(':old.name'||:old.name);
end;
2 oracle中用於輸出語句。通過dbms_output.put_line(***xx)
如:dbms_output.put_line(':old.name'||:old.name);
盡量的要使用||。括號裡的需要時字元。而||是連線使用的。連線後就成字元了。
3 oracle中的觸發器可以寫if語句來進行判斷。
格式為:
if 條件 then
sql語句;
end if;
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
begin
if inserting then
dbms_output.put_line('進行的是插入操作');
end if;
if updating then
dbms_output.put_line('進行的是更新操作');
end if;
if deleting then
dbms_output.put_line('進行的是刪除操作');
end if;
end;
4 在oracle中的觸發器中,可以判斷是否是insert還是update還是delete
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
begin
if inserting then
dbms_output.put_line('進行的是插入操作');
end if;
if updating then
dbms_output.put_line('進行的是更新操作');
end if;
if deleting then
dbms_output.put_line('進行的是刪除操作');
end if;
end;
5 在oracle中的觸發器中,可以使用『:new』和『:old』,:new表示是即將進行(插入或更新)操作的sql語句中的字段。
而:old表示進行(更新或刪除)操作時的sql語句中的字段
如: create or replace trigger test4_t
after delete
on demo
for each row
begin
dbms_output.put_line(':old.name'||:old.name);
end;
6 oracle中對字段進行賦值時,使用":="。
如: v_type:='insert';
7 oracle中的觸發器中不能對自己表進行插入更新刪除操作。但可以對別的表進行這些操作。
如:create or replace trigger test4_t
after insert or update or delete
on demo
for each row
declare v_type varchar2(10);
begin
if inserting then
v_type:='insert';
end if;
if updating then
v_type:='update';
end if;
if deleting then
v_type:='delete';
end if;
insert into log values(user,v_type,sysdate);
end;
但如果要對自己表進行插入更新刪除操作則會報錯。導致不能執行結束。
如:以下的觸發器會報錯,要多注意!!!!
如:create or replace trigger test4_t
after delete
on demo
for each row
begin
insert into demo values(:old.nm,:old.name,:old.password);
end;
Oracle之觸發器
資料庫觸發器是乙個與表相關聯的 儲存的pl sql程式。每當乙個特定的資料操作語句 insert,update,delete 在指定表上發出時,oracle自定地執行觸發器中定義的語句序列。簡單的來說就當某個條件成立的時候,觸發器裡面所定義的語句就會被自動的執行,因此觸發器不需要人為的去呼叫,也不能...
Oracle觸發器之before delete
剛接觸oracle,新建了乙個before delete的觸發器,但老是報 警告 建立的觸發器帶有編譯錯誤 最後發現是觸發器裡面的語句沒有寫分號的原因。下面帖出來,也供新手參考 1.建立表 create table test1 cardid number,name nvarchar2 20 numb...
Oracle學習之觸發器
觸發器,顧名思義,必須由事件觸發 dml事件,ddl事件,資料庫事件 dml 資料操縱語句 insert,update,delete ddl 資料定義語句 create,alter,drop 資料庫事件 startup,shutdown,logon,logoff,servererror 語法 cte...