oracle資料庫觸發器使用 trigger

2021-08-28 13:53:57 字數 2146 閱讀 8888

1.

//更新前觸發,不允許週日修改

create or replace trigger auth_secure before insert or update or delete

on tb_emp

begin

if(to_char(sysdate,'dy')='星期日') then

end if;

end;

2.//自增序列

create or replace trigger my_tgr

before insert on tab_user

for each row--對錶的每一行觸發器執行一次

declare

next_id number;

begin

select my_seq.nextval into next_id from dual;

:new.id := next_id; --:new表示新插入的那條記錄

end;

3.//dml時,記錄日誌

--建立觸發器

create or replace trigger test_trigger

after delete or insert or update on test

declare

v_type test_log.l_type%type;

begin

if inserting then

--insert觸發

v_type := 'insert';

dbms_output.put_line('記錄已經成功插入,並已記錄到日誌');

elsif updating then

--update觸發

v_type := 'update';

dbms_output.put_line('記錄已經成功更新,並已記錄到日誌');

elsif deleting then

--delete觸發

v_type := 'delete';

dbms_output.put_line('記錄已經成功刪除,並已記錄到日誌');

end if;

insert into test_log

values

(user, v_type, to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')); --user表示當前使用者名稱

end;

4.//建立觸發器,它將對映emp表中每個部門的總人數和總工資

--建立對映表

create table dept_sal as

select deptno, count(empno) total_emp, sum(sal) total_sal

from scott.emp

group by deptno;

--建立觸發器

create or replace trigger emp_info

after insert or update or delete on scott.emp

declare

cursor cur_emp is

select deptno, count(empno) as total_emp, sum(sal) as total_sal from scott.emp group by deptno;

begin

delete dept_sal; --觸發時首先刪除對映表資訊

for v_emp in cur_emp loop

--dbms_output.put_line(v_emp.deptno || v_emp.total_emp || v_emp.total_sal);

--插入資料

insert into dept_sal

values

(v_emp.deptno, v_emp.total_emp, v_emp.total_sal);

end loop;

end;

--對emp表進行dml操作

insert into emp(empno,deptno,sal) values('123','10',10000);

select * from dept_sal;

delete emp where empno=123;

select * from dept_sal;

oracle觸發器使用

size medium 語法規則 create or replace trigger 模式.觸發器名 before after insert delete update of 列名 on 表名 for each row when 條件 pl sql塊 說明 for each row的意義是 在一次操...

oracle觸發器使用案例

開發要求 刪除或者更新表tab的行時,更新表cust相應的字段。表tab中custguid欄位和表cust中cust guid欄位是關聯字段,表tab中com欄位和表cust中str欄位是關聯字段。建立表tab,表cust create table tab custguid varchar2 30 ...

oracle觸發器使用例項

在使用觸發器前先理解兩個概念 new和 old,new代表執行更新操作之後的新錶,old代表執行更新操作之前的舊表。通過這兩張表的使用,可以訪問到觸發器執行前後表資料的變化。insert操作只有 new,delete操作只有 old,update操作二者皆有。new 和 old只用於行級觸發器。ne...