create or replace
view company_phone_book as
select first_name||', '||last_name name, email,
phone_number,
employee_id emp_id
from hr.employees;
嘗試更新email和name
update hr.company_phone_book
set name='chen1, donny1'
where
emp_id=100
create or replace trigger update_name_company_phone_book
instead of
update on hr.company_phone_book
begin
update
hr.employees
set employee_id=:new.emp_id,
first_name=substr(:new.name,
instr(:new.name,',')+2),
last_name=
substr(:new.name,1,instr(:new.name,',')-1),
phone_number=:new.phone_number,
email=:new.email
where employee_id=:old.emp_id;
end;
4、
系統事件觸發器
系統事件:資料庫啟動、關閉,伺服器錯誤
create trigger ad_startup
after
startup
on database
begin
-- do some stuff
end;
/5、 使用者事件觸發器
使用者事件:使用者登陸、登出,create / alter / drop / analyze
/ audit / grant / revoke /
rename / truncate / logoff
例子:記錄刪除物件
1. 日誌表
create table droped_objects(
object_name varchar2(30),
object_type varchar2(30),
dropped_on date);
2.觸發器
create or
replace trigger log_drop_trigger
before drop on donny.schema
begin
insert into droped_objects values(
ora_dict_obj_name, -- 與觸發器相關的函式
ora_dict_obj_type,
sysdate);
end;
/3. 測試
create table drop_me(a number);
create view drop_me_view as select *from
drop_me;
drop view drop_me_view;
drop table drop_me;
select *from
droped_objects
禁用和啟用觸發器
alter trigger disable;
alter trigger enable;
事務處理:
在觸發器中,不能使用commit /
rollback
因為ddl語句具有隱式的commit,所以也不允許使用
檢視:
dba_triggers
本文**
Oracle資料庫update觸發器
在專案中使用到oracle資料庫的update觸發器,先記錄下來方便以後查閱。預備知識和格式以後再編輯吧,先把內容貼出來。create or replace trigger demo trigger after update on tb goods referencing new as new ol...
ORACLE觸發器 行級觸發器
行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸發器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例乙個簡單的...
Oracle觸發器介紹 行級觸發器
行級觸發器 本章介紹行級觸發器機制。大部分例子以insert出發器給出,行級觸發器可從insert update delete語句觸發。1 介紹 觸 髮器是儲存在資料庫已編譯的儲存過程,使用的語言是pl sql,用編寫儲存過程一樣的方式編寫和編譯觸發器。下面在sql plus會話中建立和示例一 個簡...