oracle筆記觸發器

2021-12-30 06:25:55 字數 2208 閱讀 7361

/*

pl/sql觸發器知識點

行級觸發器: 每更新 employees 表中的一條記錄, 都會導致觸發器執行

語句級觸發器: 乙個 update/delete/insert 語句只使觸發器執行一次

--乙個helloworld級別的觸發器

create or replace trigger hello_trigger

after update on employees

--for each row --for each row不寫的時候是語句級觸發器

begin

dbms_output.put_line('hello world');

end;

create or replace trigger hello_trigger2

after update on employees

for each row --寫for each row的時候是行級觸發器

begin

dbms_output.put_line('hello');

end;

--然後執行:

update employees set salary = salary + 1000;

--觸發器的 helloworld: 編寫乙個觸發器, 在向 emp10 表中插入記錄時, 列印 'helloworld'

create or replace trigger hello_trigger3

after insert on emp10

begin

dbms_output.put_line('helloworld!!!!!');

end;

--然後執行:

insert into emp10 values (102, 'lisi', '[email protected]', 26000);

-- 行級觸發器: 每更新 employees 表中的一條記錄, 都會導致觸發器執行

-- 語句級觸發器: 乙個 update/delete/insert 語句只使觸發器執行一次

--使用 :new, :old 修飾符

-- :new(操作完成後列的值) :old(操作完成前列的值)

create or replace trigger hello_trigger4

after update on emp10

for each row

begin

dbms_output.put_line('更新前的薪水' || :old.salary || '更新後的薪水' || :new.salary);

end;

update emp10 set salary = salary + 100;

--編寫乙個觸發器, 在對 emp99 記錄進行刪除的時候, 在 emp99_bak 表中備份對應的記錄

create table emp99

asselect employee_id, salary from employees

where department_id = 80 ;

select * from emp99

create table emp99_bak

asselect employee_id, salary from employees

where 666 = 888 ;

select * from emp99_bak

create or replace trigger delete_emp99

before delete on emp99

for each row

begin

insert into emp99_bak values(:old.employee_id ,:old.salary);

dbms_output.put_line('刪除了emp99表中employee_id=' || :old.employee_id || '的資料!!!');

end;

--刪除emp99表中的資料

delete from emp99 where employee_id in (145, 146, 147, 148, 149);

--刪除emp99表中的資料

delete from emp99

where employee_id >= 150

and employee_id <= 170

select * from emp99

select * from emp99_bak

oracle筆記 觸發器

1.禁止員工在休息日改變雇員資訊 create or replace trigger tri emp before insert or update or delete on emp begin if to char sysdate day nls date language american in...

oracle 觸發器筆記

什麼是觸發器 觸發器是乙個特殊的儲存過程,儲存過程和儲存函式是完成特定功能的乙個pl sql程式,觸發器也是乙個pl sql程式 觸發器的作用 每當乙個特定的資料庫操作語句 insert,update,delete 在指定的表上發出時,oracle自動地執行觸發器中定義的語句序列 觸發器的應用場景 ...

oracle筆記九(觸發器)

觸發器 分類 a dml觸發器 b 替代觸發器 c 系統觸發器 建立dml觸發器 create or replace trigger tri delemp before delete on scott.emp for each row begin insert into emp history em...