九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
觸發(fā)器基礎(chǔ)知識(shí)
DML觸發(fā)器有三類:
1, insert觸發(fā)器;2, update觸發(fā)器;3, delete觸發(fā)器;
可創(chuàng)建觸發(fā)器的對象:數(shù)據(jù)庫表,數(shù)據(jù)庫視圖,用戶模式,數(shù)據(jù)庫實(shí)例
創(chuàng)建DML觸發(fā)器:
Create [or replace] trigger [模式.]觸發(fā)器名
Before| after insert|delete|(update of 列名)
On 表名
[for each row]
When 條件
PL/SQL塊

When條件的出現(xiàn)說明了,在DML操作的時(shí)候也許一定會(huì)觸發(fā)觸發(fā)器,但是觸發(fā)器不一定會(huì)做實(shí)際的工作,比如when 后的條件不為真的時(shí)候,觸發(fā)器只是簡單地跳過了PL/SQL塊;
For each row的意義是:在一次操作表的語句中,每操作成功一行就會(huì)觸發(fā)一次,如果在after update on student后加上For each row的話就成為行級(jí)觸發(fā)器。
不寫的話,表示是表級(jí)觸發(fā)器,表級(jí)觸發(fā)器在更新了多行的情況下,只觸發(fā)了一次;
:new 與: old:必須是針對行級(jí)觸發(fā)器的,也就是說要使用這兩個(gè)變量的觸發(fā)器一定有for each row這兩個(gè)變量是系統(tǒng)自動(dòng)提供的數(shù)組變量,:new用來記錄新插入的值,old用來記錄被刪除的值;使用insert的時(shí)候只有:new里有值;使用delete的時(shí)候只有:old里有值;使用update的時(shí)候:new和:old里都有值;帶有:old變量的行級(jí)delete觸發(fā)器:
create or replace trigger tg_deletestudent
before delete on student
for each row
begin
dbms_output.put_line('old is: '||:old.stuid);
dbms_output.put_line('old name: '||:old.stuname);
end;

When子句:觸發(fā)器主題只對滿足when所定義條件的那些記錄行執(zhí)行,可以在when子句內(nèi)部使用new和old記錄,不需要用冒號(hào)。

混合類型觸發(fā)器:
Inserting,deleting,updating三個(gè)謂詞可以分別指示當(dāng)前操作到底是哪個(gè);
create or replace trigger hunhetrigger
before insert or update or delete on student
for each row
begin
if inserting then
dbms_output.put_line('insert le.........');
end if;
if deleting then
dbms_output.put_line('delete le .......');
end if;
end;
插入的時(shí)候就自動(dòng)判斷當(dāng)前動(dòng)作為插入:
SQL> insert into student values(303,'me','f');
insert le.........
刪除的時(shí)候就自動(dòng)判斷當(dāng)前動(dòng)作為刪除:
SQL> delete from student;
delete le .......
注意,既然觸發(fā)器內(nèi)部的主體PL/SQL是語句,那么它同樣也可以是插入刪除操作而不一定只是dbms_output打印一些信息;

這正是日志表的原理:在用戶執(zhí)行了DML語句的時(shí)候觸發(fā)主體為插入日志表以記錄操作軌跡的觸發(fā)器;

觸發(fā)器會(huì)使得原來的SQL語句速度變慢;

替代觸發(fā)器:創(chuàng)建在視圖上的觸發(fā)器,就是替代觸發(fā)器,只能是行級(jí)觸發(fā)器;

為什么要用替代觸發(fā)器?
假如你有一個(gè)視圖是基于多個(gè)表的字段連接查詢得到的;現(xiàn)在如果你想直接對著這個(gè)視圖insert;那你一定在想,我對視圖的插入操作,怎么來反應(yīng)到組成這個(gè)視圖的各個(gè)表中呢?事實(shí)上,除了定義一個(gè)觸發(fā)器來綁定在對視圖上的插入動(dòng)作上外,你沒有別的辦法通過系統(tǒng)的報(bào)錯(cuò)而直接向視圖中插入數(shù)據(jù);這就是我們用替代觸發(fā)器的原因;替換的意思實(shí)際上是觸發(fā)器的主體部分把對視圖的插入操作轉(zhuǎn)換成詳細(xì)的對各個(gè)表的插入;

變異表:變異表就是當(dāng)前SQL語句正在修改的表,所以在一個(gè)變異表上綁定的觸發(fā)器不可以使用cout()函數(shù),原因很簡單:SQL語句剛剛修改了表,你怎么統(tǒng)計(jì)??

約束表:
維護(hù):
Alter trigger …..disenable;    使得觸發(fā)器不可用;
Alter trigger ……enable;     開啟觸發(fā)器;
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ORACLE PL/SQL編程之八:把觸發(fā)器說透
SQL語言基礎(chǔ):觸發(fā)器相關(guān)知識(shí)介紹?
MySQL TRIGGER 觸發(fā)器
數(shù)據(jù)庫中觸發(fā)器的創(chuàng)建與注意事項(xiàng)
INSTEADOF觸發(fā)器
SQL菜鳥入門級(jí)教程之觸發(fā)器
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服