linux mysql 触发器_MySQL触发器的正确用法

一、创建触发器的基本语法:

CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW 触发器语句

触发事件包括:INSERT、UPDATE、DELETE

二、正确案例演示

如果想在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

2f2c5b61106d63263fc3321750fbd8b3.png

图1 创建成功

b41c0ee5803102d50ca0bbe4583c974e.png

图2 更新触发测试

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值