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

2022-11-12 09:19:19
内容摘要
这篇文章主要为大家详细介绍了MySQL 在触发器里中断记录的插入或更新?,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记!下面是一种实现的方
文章正文

这篇文章主要为大家详细介绍了MySQL 在触发器里中断记录的插入或更新?,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

下面是一种实现的方法。思路就是想办法在触发器中利用一个出错的语句来中断代码的执行。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 existmysql>

注:关于MySQL 在触发器里中断记录的插入或更新?的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!