服务器之家

服务器之家 > 正文

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

时间:2019-10-31 15:07     来源/作者: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>

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部