婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > oracle 觸發器 學習筆記

oracle 觸發器 學習筆記

熱門標簽:南通防封外呼系統運營商 淮安自動外呼系統開發 廣州市400電話辦理 宜賓外呼系統廠家 語音電話機器人缺點 修改高德地圖標注 語音電話機器人營銷方案 地圖標注原件 百變地圖標注
功能:
1、 允許/限制對表的修改
2、 自動生成派生列,比如自增字段
3、 強制數據一致性
4、 提供審計和日志記錄
5、 防止無效的事務處理
6、 啟用復雜的業務邏輯
開始
create trigger biufer_employees_department_id
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
when (new_value.department_id>80 )
begin
:new_value.commission_pct :=0;
end;
/
觸發器的組成部分:
1、 觸發器名稱
2、 觸發語句
3、 觸發器限制
4、 觸發操作
1、 觸發器名稱
create trigger biufer_employees_department_id
命名習慣:
biufer(before insert update for each row)
employees 表名
department_id 列名
2、 觸發語句
比如:
表或視圖上的DML語句
DDL語句
數據庫關閉或啟動,startup shutdown 等等
before insert or update
of department_id
on employees
referencing old as old_value
new as new_value
for each row
說明:
1、 無論是否規定了department_id ,對employees表進行insert的時候
2、 對employees表的department_id列進行update的時候
3、 觸發器限制
when (new_value.department_id>80 )
限制不是必須的。此例表示如果列department_id不等于80的時候,觸發器就會執行。
其中的new_value是代表跟新之后的值。
4、 觸發操作
是觸發器的主體
begin
:new_value.commission_pct :=0;
end;
主體很簡單,就是將更新后的commission_pct列置為0
觸發:
insert into employees(employee_id,
last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct )
values( 12345,'Chen','Donny', sysdate, 12, ‘donny@hotmail.com',60,10000,.25);
select commission_pct from employees where employee_id=12345;
觸發器不會通知用戶,便改變了用戶的輸入值。
觸發器類型:
1、 語句觸發器
2、 行觸發器
3、 INSTEAD OF 觸發器
4、 系統條件觸發器
5、 用戶事件觸發器
1、 語句觸發器
是在表上或者某些情況下的視圖上執行的特定語句或者語句組上的觸發器。能夠與INSERT、UPDATE、
DELETE或者組合上進行關聯。但是無論使用什么樣的組合,各個語句觸發器都只會針對指定語句激活一次
。比如,無論update多少行,也只會調用一次update語句觸發器。
例子:
需要對在表上進行DML操作的用戶進行安全檢查,看是否具有合適的特權。
Create table foo(a number);
Create trigger biud_foo
Before insert or update or delete
On foo
Begin
If user not in (‘DONNY') then
Raise_application_error(-20001, ‘You don't have access to modify this table.');
End if;
End;
/
即使SYS,SYSTEM用戶也不能修改foo表
[試驗]
對修改表的時間、人物進行日志記錄。
1、 建立試驗表
create table employees_copy as select *from hr.employees
2、 建立日志表
create table employees_log(
who varchar2(30),
when date);
3、 在employees_copy表上建立語句觸發器,在觸發器中填充employees_log 表。
Create or replace trigger biud_employee_copy
Before insert or update or delete
On employees_copy
Begin
Insert into employees_log(
Who,when)
Values( user, sysdate);
End;
/
4、 測試
update employees_copy set salary= salary*1.1;
select *from employess_log;
5、 確定是哪個語句起作用?
即是INSERT/UPDATE/DELETE中的哪一個觸發了觸發器?
可以在觸發器中使用INSERTING / UPDATING / DELETING 條件謂詞,作判斷:
begin
if inserting then
-----
elsif updating then
-----
elsif deleting then
------
end if;
end;
if updating(‘COL1') or updating(‘COL2') then
------
end if;
[試驗]
1、 修改日志表
alter table employees_log
add (action varchar2(20));
2、 修改觸發器,以便記錄語句類型。
Create or replace trigger biud_employee_copy
Before insert or update or delete
On employees_copy
Declare
L_action employees_log.action%type;
Begin
if inserting then
l_action:='Insert';
elsif updating then
l_action:='Update';
elsif deleting then
l_action:='Delete';
else
raise_application_error(-20001,'You should never ever get this error.');
Insert into employees_log(
Who,action,when)
Values( user, l_action,sysdate);
End;
/
3、 測試
insert into employees_copy( employee_id, last_name, email, hire_date, job_id)
values(12345,'Chen','Donny@hotmail',sysdate,12);
select *from employees_log
update employees_copy set salary=50000 where employee_id = 12345;
2、 行觸發器
是指為受到影響的各個行激活的觸發器,定義與語句觸發器類似,有以下兩個例外:
1、 定義語句中包含FOR EACH ROW子句
2、 在BEFORE……FOR EACH ROW觸發器中,用戶可以引用受到影響的行值。
比如:
定義:
create trigger biufer_employees_department_id
before insert or update
of department_id
on employees_copy
referencing old as old_value
new as new_value
for each row
when (new_value.department_id>80 )
begin
:new_value.commission_pct :=0;
end;
/
Referencing 子句:
執行DML語句之前的值的默認名稱是 :old ,之后的值是 :new
insert 操作只有:new
delete 操作只有 :old
update 操作兩者都有
referencing子句只是將new 和old重命名為new_value和old_value,目的是避免混淆。比如操作一個名為
new的表時。
作用不很大。
[試驗]:為主健生成自增序列號
drop table foo;
create table foo(id number, data varchar2(20));
create sequence foo_seq;
create or replace trigger bifer_foo_id_pk
before insert on foo
for each row
begin
select foo_seq.nextval into :new.id from dual;
end;
/
insert into foo(data) values(‘donny');
insert into foo values(5,'Chen');
select * from foo;
3、 INSTEAD OF 觸發器更新視圖
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 trigger_name> disable;
alter trigger trigger_name> enable;
事務處理:
在觸發器中,不能使用commit / rollback
因為ddl語句具有隱式的commit,所以也不允許使用
視圖:
dba_triggers
您可能感興趣的文章:
  • Oracle觸發器用法實例詳解
  • Oracle創建主鍵自增表(sql語句實現)及觸發器應用
  • oracle監控某表變動觸發器例子(監控增,刪,改)
  • [Oracle] 如何使用觸發器實現IP限制用戶登錄
  • oracle 存儲過程和觸發器復制數據
  • Oracle 觸發器的使用小結
  • ORACLE PL/SQL 觸發器編程篇介紹
  • SqlServer實現類似Oracle的before觸發器示例
  • Oracle觸發器trigger詳解
  • Oracle中觸發器示例詳解

標簽:南平 池州 南平 通化 聊城 襄陽 股票投資 嘉峪關

巨人網絡通訊聲明:本文標題《oracle 觸發器 學習筆記》,本文關鍵詞  oracle,觸發器,學習,筆記,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《oracle 觸發器 學習筆記》相關的同類信息!
  • 本頁收集關于oracle 觸發器 學習筆記的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产成人免费av在线| 亚洲天堂免费看| 蜜桃在线一区二区三区| 欧美二区乱c少妇| 国产成人夜色高潮福利影视| 欧美日韩国产大片| 欧美精品一区二区在线观看| 国产一区二区三区电影在线观看| 中文字幕在线一区| 99综合电影在线视频| 日韩精品一区二区三区三区免费 | 国产成人精品1024| 国产亚洲自拍一区| aaa亚洲精品| 国产一区二区三区免费看| 亚洲日本青草视频在线怡红院| 色婷婷av一区二区三区大白胸 | 亚洲一区精品在线| 日韩欧美的一区| 亚洲一区二区三区四区不卡| 欧美va在线播放| 3751色影院一区二区三区| 国产乱子伦视频一区二区三区| 五月天久久比比资源色| 欧美成人福利视频| 91福利国产成人精品照片| 国产不卡视频一区| 亚洲午夜免费视频| 亚洲精品精品亚洲| 国产欧美精品一区| 国产亚洲综合在线| 久久精品日韩一区二区三区| 欧美日韩一区二区三区在线| 国产激情一区二区三区四区| 日本乱码高清不卡字幕| 91视频在线观看| 色综合一区二区三区| 欧美色精品在线视频| 不卡免费追剧大全电视剧网站| 男女男精品视频| 丝袜美腿高跟呻吟高潮一区| 亚洲小说欧美激情另类| 九一九一国产精品| 国产成人精品1024| 丁香亚洲综合激情啪啪综合| 亚洲一区二区视频在线观看| 日韩美女视频一区二区| 国产精品久久久一区麻豆最新章节| 2023国产精品自拍| 日韩一区二区三区电影在线观看| 日韩美一区二区三区| 欧美欧美欧美欧美首页| 91精品欧美福利在线观看| 欧美日韩在线观看一区二区| av一本久道久久综合久久鬼色| 精品久久久久久亚洲综合网| 国产成人精品亚洲午夜麻豆| 国产日产欧产精品推荐色| 欧美亚洲丝袜传媒另类| 国产日韩av一区| 国产精品久久久久久久久免费丝袜 | 天堂一区二区在线| 日韩精品91亚洲二区在线观看| 免费观看一级欧美片| 精品无码三级在线观看视频| 国产一区二区在线看| 国产精品亚洲午夜一区二区三区| 日韩成人免费看| 成人免费观看男女羞羞视频| 中文字幕一区av| 国产精品自拍在线| 色综合婷婷久久| 欧美日韩黄色影视| 91精品久久久久久久99蜜桃| 一区二区三区四区国产精品| 日韩精品每日更新| av高清久久久| 久久久久国产一区二区三区四区 | 欧美日韩国产欧美日美国产精品| 成人激情午夜影院| 欧美福利视频导航| 精品理论电影在线| 最新热久久免费视频| 亚洲欧美国产77777| 国产一区二区看久久| 国产一区二区三区精品视频| 欧美精品日韩一本| 亚洲欧美在线视频观看| 久久久久久久性| 一区二区三区欧美| 日本午夜精品一区二区三区电影 | 国产精品免费丝袜| 亚洲欧美日韩国产成人精品影院| 一区二区三区精品在线观看| 婷婷国产在线综合| 色女孩综合影院| 欧美日韩精品三区| 精品久久久久久久人人人人传媒| 亚洲国产精品激情在线观看| 成人aaaa免费全部观看| 成人一区二区三区在线观看 | 亚洲精品视频在线观看免费 | 91论坛在线播放| 日韩一区二区三区免费看| 欧美体内she精视频| 日韩欧美精品在线| 精品成人免费观看| 成人免费毛片a| 色婷婷亚洲婷婷| zzijzzij亚洲日本少妇熟睡| 欧美在线影院一区二区| 国产精品久久久一区麻豆最新章节| 久久精品国产秦先生| 国产综合久久久久久鬼色 | 亚洲精品水蜜桃| 亚洲柠檬福利资源导航| 亚洲欧美日韩在线| 亚洲精品国产一区二区三区四区在线| 亚洲精品国产一区二区精华液 | 亚洲图片欧美激情| 中文字幕欧美一| 亚洲精品中文字幕乱码三区| 一区二区三区视频在线看| 日韩精品久久理论片| 玖玖九九国产精品| 国产主播一区二区| www.爱久久.com| 在线亚洲欧美专区二区| 欧美精品欧美精品系列| 日韩午夜中文字幕| 国产精品私人影院| 亚洲精品自拍动漫在线| 亚洲乱码中文字幕| 一区二区在线观看不卡| 亚洲国产成人高清精品| 亚洲第一会所有码转帖| 久久97超碰国产精品超碰| 国产91精品免费| 91久久国产综合久久| 精品精品欲导航| 国产精品福利影院| 亚洲专区一二三| 国产在线精品一区二区不卡了| 成人aaaa免费全部观看| 欧美日韩精品一区二区三区 | a4yy欧美一区二区三区| 欧美性高清videossexo| 久久欧美一区二区| 久久精品视频一区二区三区| 亚洲免费观看视频| 国产一区欧美一区| 91精品福利视频| 欧美成人aa大片| 亚洲裸体xxx| 精品亚洲成a人| 在线精品亚洲一区二区不卡| 欧美成人艳星乳罩| 一区二区视频在线| 看电视剧不卡顿的网站| 91视频91自| 国产日韩欧美精品电影三级在线| 一区二区三区精品视频在线| 国产在线播放一区| 欧美另类久久久品| 国产精品每日更新| 青娱乐精品在线视频| 在线中文字幕不卡| 久久久一区二区三区| 亚洲高清免费观看 | 三级成人在线视频| 欧美国产激情一区二区三区蜜月 | 懂色av一区二区三区蜜臀| 91网站视频在线观看| 国产日韩精品一区二区三区| 亚洲一区影音先锋| 不卡一区中文字幕| 精品国产一区久久| 日韩高清一级片| 在线亚洲免费视频| 日韩精品中文字幕一区二区三区| 欧美性一二三区| 久久人人爽爽爽人久久久| 亚洲一区二区三区四区在线免费观看| 风间由美一区二区三区在线观看| 欧美一区二区免费视频| 亚洲另类春色校园小说| 成人福利视频在线| 久久久久久综合| 久久精品国产精品亚洲精品| 欧美日韩精品免费观看视频| 亚洲天堂2016| 99视频热这里只有精品免费| 久久久久高清精品| 九九九精品视频| 欧美成人猛片aaaaaaa| 亚洲韩国精品一区| 在线免费不卡视频| 亚洲综合激情网| 欧洲中文字幕精品| 亚洲一二三四区不卡|