MySQL触发器trigger的使用

官方开发文档5.7版本

直接举例好了
先创建表

create table user (
    id int(11) auto_increment,
    sex int(1)
    primary key(id)
);
create table sexcount (
    sex char(10),
    count int(11)
)

一张表储存用户信息,一张表统计性别,user表中的sex字段代表用户的性别,1表示男性,0表示女性
插入基本数据

INSERT user values (null, 0), (null, 0), (null, 1), (null, 1);
INSERT sexcount values ('male', 2), ('female', 2);

然后创建触发器,当user表有删除或插入动作的时候会触发触发器

delimiter //
CREATE TRIGGER user_insert BEFORE INSERT ON user
FOR EACH ROW
BEGIN
    IF NEW.sex = 1 THEN
        UPDATE sexcount SET count=count+1 WHERE sex='male';
    ELSEIF NEW.sex=0 THEN
        UPDARE sexcount SET count=count+1 WHERE sex='female';
    END IF;
END //
delimiter ;

上面的这段代码表示创建一个叫做”user_insert”的触发器,当user表执行了insert动作前,会提前触发user_insert触发器,触发器判断新插入的用户的性别,然后根据性别更新sexcount表中的数据。
接下来再创建一个触发器 user_delete

delimiter //
CREATE TRIGGER user_delete BEFORE DELETE ON user
FOR EACH ROW
BEGIN
    IF OLD.sex = 1 THEN
        UPDATE sexcount SET count=count-1 WHERE sex='male';
    ELSEIF OLD.sex=0 THEN
        UPDARE sexcount SET count=count-1 WHERE sex='female';
    END IF;
END //
delimiter ;

创建过程基本没差别,值得注意的是,被改变的行的表示方式是不一样的,insert的行用NEW来表示,delete或者update的行用OLD来表示。

还有就是delimiter的运用,因为在创建触发器的过程中需要键入分号,而在MySQL命令行环境中分号是执行一段语句的终止符。delimiter的作用就是重定义结束字符。

然后你可以在user表中插入删除一些数据,看看sexcount表有没有变化。
顺便提醒一下以上所有代码没有经过验证,全部是靠记忆手写出来的,不保证能正确运行,仅供参考。
最好还是去官方的开发文档看看官方开发文档5.7版本

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值