MySQL觸發器的正確用法

來源:互聯網
上載者:User

MySQL觸發器的正確用法

一、建立觸發器的基本文法:
CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件 ON 表名 FOR EACH ROW 觸發器語句
    觸發事件包括:INSERT、UPDATE、DELETE

MySQL 觸發器應用案例

MySQL自動更新時間的觸發器

MySQL 觸發器簡單一實例

二、正確案例示範
    如果想在sql檔案中直接建立觸發器,下面為一個完整的sql檔案建立(含觸發器的建立)樣本:

use mysql
drop database if exists myTest;
create database myTest default charset=gb2312;
use myTest;
create table Stud
(
sno int(8),
sname varchar(64),
ssex varchar(64),
sage int(4) ,
sdep varchar(128)
);
create table Scsc
(
sno int(8),
cno int(4),
grade int(4)
);
insert into Stud(sno,sname,ssex,sage,sdep) values(2006126001,'lwj','female',19,'com scen');
insert into Stud(sno,sname,ssex,sage,sdep) values(2006126002,'fj','male',20,'com scen');
insert into Scsc(sno,cno,grade) values(2006126001,1001,70);
insert into Scsc(sno,cno,grade) values(2006126002,1002,85);
-- 注意下面mysql的觸發器的用法:
-- 當其放在sql語句中與資料庫/表一起建立的時候
-- 必須重定義結束符為$$(代替;),否則建立出錯。
-- 且建立觸發器的過程要放在quit的前面,這樣
-- 不至於造成常規的sql語句無法執行問題。
delimiter $$
drop trigger if exists delTrigger$$
create trigger delTrigger after delete on Stud for each row
begin
declare oldsno char(10);
set oldsno=old.sno;
delete from Scsc where sno=oldsno;
end$$
drop trigger if exists updateTgr$$
create trigger updateTgr after update on Stud for each row
begin
declare newsno char(10);
declare oldsno char(10);
set newsno = NEW.sno;
set oldsno = OLD.sno;
if newsno<>oldsno then
update Scsc set sno=newsno where sno=oldsno;
end if;
end$$
quit

圖1 建立成功

圖2 更新觸發測試

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.