主頁(yè) > 知識(shí)庫(kù) > Oracle使用觸發(fā)器和mysql中使用觸發(fā)器的案例比較

Oracle使用觸發(fā)器和mysql中使用觸發(fā)器的案例比較

熱門(mén)標(biāo)簽:地方門(mén)戶網(wǎng)站 百度競(jìng)價(jià)排名 AI電銷 呼叫中心市場(chǎng)需求 鐵路電話系統(tǒng) 服務(wù)外包 網(wǎng)站排名優(yōu)化 Linux服務(wù)器

一、觸發(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)站的支持!

您可能感興趣的文章:
  • Oracle觸發(fā)器實(shí)例代碼
  • Oracle觸發(fā)器表發(fā)生了變化 觸發(fā)器不能讀它的解決方法(必看)
  • Oracle觸發(fā)器用法實(shí)例詳解
  • Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例
  • oracle監(jiān)控某表變動(dòng)觸發(fā)器例子(監(jiān)控增,刪,改)
  • [Oracle] 如何使用觸發(fā)器實(shí)現(xiàn)IP限制用戶登錄
  • oracle 存儲(chǔ)過(guò)程和觸發(fā)器復(fù)制數(shù)據(jù)
  • oracle 觸發(fā)器 實(shí)現(xiàn)出入庫(kù)
  • oracle 觸發(fā)器 學(xué)習(xí)筆記
  • 詳解oracle中通過(guò)觸發(fā)器記錄每個(gè)語(yǔ)句影響總行數(shù)

標(biāo)簽:湘潭 銅川 仙桃 湖南 黃山 衡水 崇左 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle使用觸發(fā)器和mysql中使用觸發(fā)器的案例比較》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266