mysql 触发器 in_MySQL 在触发器里中断记录的插入或更新?

MySQL 在触发器里中断记录的插入或更新?

更新时间:2009年07月26日 21:56:46   作者:

MySQL 不象其它有些数据库可以在触发器中抛出异常来中断当然触发器的执行以阻止相应的SQL语句的执行。在MySQL的目录版本中还无法直接抛出异常。这样我们如何实现呢?

下面是一种实现的方法。思路就是想办法在触发器中利用一个出错的语句来中断代码的执行。

mysql> create table t_control(id int primary key);

Query OK, 0 rows affected (0.11 sec)

mysql> insert into t_control values (1);

Query OK, 1 row affected (0.05 sec)

mysql> create table t_bluerosehero(id int primary key,col int);

Query OK, 0 rows affected (0.11 sec)

mysql> delimiter //

mysql> create trigger tr_t_bluerosehero_bi before insert on t_bluerosehero

-> for each row

-> begin

-> if new.col>30 then

-> insert into t_control values (1);

-> end if;

-> end;

-> //

Query OK, 0 rows affected (0.08 sec)

mysql> delimiter ;

mysql>

mysql> insert into t_bluerosehero values (1,20);

Query OK, 1 row affected (0.25 sec)

mysql> insert into t_bluerosehero values (2,40);

ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

mysql>

mysql> select * from t_bluerosehero;

+----+------+

| id | col |

+----+------+

| 1 | 20 |

+----+------+

1 row in set (0.00 sec)

mysql>

或者

mysql> delimiter //

mysql> create trigger tr_t_bluerosehero_bi before insert on t_bluerosehero

-> for each row

-> begin

-> declare i int;

-> if new.col>30 then

-> insert into xxxx values (1);

-> end if;

-> end;

-> //

Query OK, 0 rows affected (0.06 sec)

mysql> delimiter ;

mysql> delete from t_bluerosehero;

Query OK, 3 rows affected (0.05 sec)

mysql> insert into t_bluerosehero values (1,20);

Query OK, 1 row affected (0.06 sec)

mysql> insert into t_bluerosehero values (2,40);

ERROR 1146 (42S02): Table 'csdn.xxxx' doesn't exist

mysql>

相关文章

1a1b05c64693fbf380aa1344a7812747.png

这篇文章主要介绍了mysql命令行如何操作,还为大家分享了mysql添加环境变量的方法,感兴趣的小伙伴们可以参考一下2015-11-11

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章介绍了Mysql 导入导出csv 中文乱码问题的解决方法,有需要的朋友可以参考一下2013-09-09

0ea3c7666119d5615e582f823fb3fad6.png

这篇文章主要介绍了在MySQL中删除表的操作教程,是MySQ入门学习中的基础知识,需要的朋友可以参考下2015-05-05

4f96a78db829b1556ff16de21e013c7a.png

本篇文章是对innodb与myisam在存储上有何特点和区别进行了详细的分析介绍,需要的朋友参考下2013-06-06

8cc1031babc6aff2319f1c6af8544aa0.png

这篇文章主要介绍了CentOS7 下MySQL定时自动备份的实现方法,主要实现了数据库备份,清理过期备份文件功能,需要的朋友可以参考下2019-12-12

0c932a99bb7b6f23c937db507070cc7b.png

如果需要远程连接 Linux 系统上的 MySQL 时,必须为其 IP 和 具体用户 进行 授权,本篇文章主要介绍了Linux中 MySQL 授权远程连接的方法步骤,感兴趣的小伙伴们可以参考一下2018-10-10

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要介绍了mysql 5.7.19 二进制最新安装的相关资料,需要的朋友可以参考下2017-10-10

2d9f31f2af7b675a3d153d2b7f1035a7.png

本文给大家分享的是将mysql升级到5.6.25版本后所遇到的2个问题的处理解决办法,有需要的小伙伴可以参考下。2015-07-07

b452cee8ec5cd9e58ab98eba17281e59.png

MySql 新建用户,新建数据库,用户授权,删除用户,修改密码2008-09-09

f4838ec7e2d4da28e0b57d4e852dadd4.png

使用phpMyAdmin将Excel中的数据导入MySql,需要将execl导入到mysql数据库的朋友可以参考下。2010-08-08

最新评论

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值