/* 同一表使用所有條件 Create or replace trigger t5 Before insert,delete,update on 表名 For each row //plsql塊 */ /* 在觸發器中,還有三個變量:都是boolean INSERTING 正在執行insert嗎。 DELETING UPDATING */ select TABLE_NAME from USER_TABLES; select * from trigger_t2; desc trigger_t2; create or replace trigger t4 before INSERT OR UPDATE or delete on trigger_t2 FOR EACH ROW declare begin if inserting then dbms_output.put_line('寫入'); elsif deleting then dbms_output.put_line('刪除'); else dbms_output.put_line('更新'); end if; end; ---測試 set serveroutput on; insert into trigger_t2 values(1,'jk',23); delete from trigger_t2 where id=1; update trigger_t2 set name='kk'; --------------------------------------------------- --------------------------------------------------- --使用when語句設置條件 create or replace trigger t5 before INSERT on trigger_t2 FOR EACH ROW when (NEW.age<=18) declare begin DBMS_OUTPUT.PUT_LINE('大於20是:'||:NEW.age); RAISE_APPLICATION_ERROR(-20000, '年齡小於18不能參與'); end; set serveroutput on; INSERT INTO TRIGGER_T2 VALUES(4,'KK',22); /* --禁用trigger alter trigger t4 disable; alter trigger t4 enable; --修改名稱 alter trigger t4 rename to t5; */