程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle使用觸發器和mysql中使用觸發器的案例比較

Oracle使用觸發器和mysql中使用觸發器的案例比較

編輯:關於Oracle數據庫

一、觸發器

  1.觸發器在數據庫裡以獨立的對象存儲,

  2.觸發器不需要調用,它由一個事件來觸發運行

  3.觸發器不能接收參數

  --觸發器的應用

    舉個例子:校內網、開心網、facebook,當你發一個日志,自動通知好友,其實就是在增加日志的時候做一個出發,再向表中寫入條目。

  --觸發器的效率很高

    舉例:論壇的發帖,每插入一個帖子都希望將版面表中的最後發帖時間,帖子總數字段進行同步更新,這時使用觸發器效率會很高。

二、Oracle 使用 PL/SQL 編寫觸發器

1.--PL/SQL創建觸發器的一般語法

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.--練習

--問題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;
--問題2.編寫一個觸發器,在向 emp 表中插入記錄時 打印'hello'
create or replace trigger tri_update
after
insert on emp
begin
  dbms_output.put_line('ok');
end;
--問題1.一個helloworld級別的觸發器
--創建一個觸發器,在更新employees表的時候觸發
create or replace trigger tri_update
after
update on employees
for each row --想在最後執行完打印一個ok,把這句話去掉
begin
  dbms_output.put_line('ok');
end;
--執行
update employees
set salary = salary+1
where department_id = 80

三、在MySql 使用觸發器

--假設有兩張表 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)
);
--創建一個觸發器
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 ;
--當我們對article表執行插入操作的是後就會觸發這個觸發器
insert into board values(null,'test_boardname',0);
insert into article values(null,'test_title',1);
--執行完這條插入語句後,board表中的articleCount字段值回+1;這個操作由觸發器完成。

以上所述是小編給大家介紹的Oracle使用觸發器和mysql中使用觸發器的案例比較,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved