Oracle使用觸發(fā)器和mysql中使用觸發(fā)器的案例比較
一、觸發(fā)器
1.觸發(fā)器在數(shù)據(jù)庫(kù)里以獨(dú)立的對(duì)象存儲(chǔ),
2.觸發(fā)器不需要調(diào)用,它由一個(gè)事件來(lái)觸發(fā)運(yùn)行
3.觸發(fā)器不能接收參數(shù)
--觸發(fā)器的應(yīng)用
舉個(gè)例子:校內(nèi)網(wǎng)、開(kāi)心網(wǎng)、facebook,當(dāng)你發(fā)一個(gè)日志,自動(dòng)通知好友,其實(shí)就是在增加日志的時(shí)候做一個(gè)出發(fā),再向表中寫(xiě)入條目。
--觸發(fā)器的效率很高
舉例:論壇的發(fā)帖,每插入一個(gè)帖子都希望將版面表中的最后發(fā)帖時(shí)間,帖子總數(shù)字段進(jìn)行同步更新,這時(shí)使用觸發(fā)器效率會(huì)很高。
二、Oracle 使用 PL/SQL 編寫(xiě)觸發(fā)器
1.--PL/SQL創(chuàng)建觸發(fā)器的一般語(yǔ)法
create [or replace] trigger trigger_name {before | after} {insert | delete | update [of column[,column ... ]]} on table_name [for each row] [where condition] --trigger_body; begin end;
2.--練習(xí)
--問(wèn)題3.使用:old 和 :new 操作符 create or replace trigger tri_update after update on employees for each row begin dbms_output.put_line('更新前:'||:old.salary||' 更新后:'||:new.salary); end; --問(wèn)題2.編寫(xiě)一個(gè)觸發(fā)器,在向 emp 表中插入記錄時(shí) 打印'hello' create or replace trigger tri_update after insert on emp begin dbms_output.put_line('ok'); end; --問(wèn)題1.一個(gè)helloworld級(jí)別的觸發(fā)器 --創(chuàng)建一個(gè)觸發(fā)器,在更新employees表的時(shí)候觸發(fā) create or replace trigger tri_update after update on employees for each row --想在最后執(zhí)行完打印一個(gè)ok,把這句話去掉 begin dbms_output.put_line('ok'); end; --執(zhí)行 update employees set salary = salary+1 where department_id = 80
三、在MySql 使用觸發(fā)器
--假設(shè)有兩張表 board 和 article create table board( id int primary key auto_increment, name varchar(50), articleCount int ); create table article( id int primary key auto_increment, title varchar(50), bid int references board(id) ); --創(chuàng)建一個(gè)觸發(fā)器 delimiter $$ create trigger insertArticle_trigger after insert on article for each row begin update board set articleCount=articleCount+1 where id = new.bid; end; $$ delimiter ; --當(dāng)我們對(duì)article表執(zhí)行插入操作的是后就會(huì)觸發(fā)這個(gè)觸發(fā)器 insert into board values(null,'test_boardname',0); insert into article values(null,'test_title',1); --執(zhí)行完這條插入語(yǔ)句后,board表中的articleCount字段值回+1;這個(gè)操作由觸發(fā)器完成。
以上所述是小編給大家介紹的Oracle使用觸發(fā)器和mysql中使用觸發(fā)器的案例比較,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Oracle11g audit審計(jì)配置全過(guò)程
Oracle審計(jì)功能是數(shù)據(jù)庫(kù)安全管理的重要組成部分,能夠幫助管理員監(jiān)控和記錄數(shù)據(jù)庫(kù)操作,確保安全和合規(guī),審計(jì)分為標(biāo)準(zhǔn)審計(jì)、細(xì)粒度審計(jì)和統(tǒng)一審計(jì)等類(lèi)型,可通過(guò)設(shè)置AUDIT_TRAIL參數(shù)和相關(guān)命令開(kāi)啟和配置,同時(shí),審計(jì)記錄需要定期查看和清理,以維護(hù)系統(tǒng)性能和存儲(chǔ)空間2024-10-10Oracle 左連接(+)加號(hào)用法及常用語(yǔ)法之間的關(guān)系
通過(guò)分析左連接(+)加號(hào)的寫(xiě)法和一些常用語(yǔ)法之間的聯(lián)系,了解到Oracle 加號(hào)(+)的用法。本文重點(diǎn)給大家介紹Oracle 左連接(+)加號(hào)用法及常用語(yǔ)法之間的關(guān)系 ,感興趣的朋友跟隨小編一起看看吧2018-10-10解決Oracle RMAN刪除歸檔日志不釋放問(wèn)題的方法
RMAN清除方式會(huì)自動(dòng)清除磁盤(pán)上的歸檔日志文件,同時(shí)會(huì)釋放控制文件中對(duì)應(yīng)的歸檔日志的歸檔信息,但最近在使用中就遇到了一個(gè)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于解決Oracle RMAN刪除歸檔日志不釋放問(wèn)題的方法,需要的朋友可以參考下。2017-07-07Oracle11.2.0.1如何升級(jí)到11.2.0.3 Oracle同版本升級(jí)
這篇文章主要為大家詳細(xì)介紹了Oracle11.2.0.1如何升級(jí)到11.2.0.3的過(guò)程,Oracle同版本升級(jí)的方法,感興趣的小伙伴們可以參考一下2016-07-07詳解Oracle調(diào)試存儲(chǔ)過(guò)程
這篇文章主要介紹了詳解Oracle調(diào)試存儲(chǔ)過(guò)程的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下2017-08-08