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

2016-02-19 09:42 17 1 收藏

下面图老师小编要跟大家分享MySQL 在触发器里中断记录的插入或更新?,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

【 tulaoshi.com - 编程语言 】

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

来源:https://www.tulaoshi.com/n/20160219/1591803.html

延伸阅读
问题 我有一个创建在表上的触发器,当对表执行一个INSERT,DELETE或者UPDATE语句时,这个触发器将被激活执行。我想在一个特定的语句上阻止触发器被激活,而当执行其它语句时触发器仍然保持正常的执行状态。有没有一种方法可以动态做到这些? 专家解答 在某些时候,停用触发器是可能需要你去做的事情,尤其是你在一张表上执...
标签: 电脑入门
6.6.1 操作前准备步骤1: 在需要插入音频的那张幻灯片中单击插入菜单,在其下拉菜单中,选中影片和声音命令,在其下一级菜单中选中文件中的声音选项,如图6-30所示: 图 6-30 在 插入声音对话框找到你要插入的音频文件,选中,单击确定命令, 图 6-31 插入声音对话框 步骤2: 导入音频文件后,打开Microsoft Office PoerPoint的播...
触发器的概念:“在数据库中为响应一个特殊表格中的某些事件而自动执行的程序代码。”(Wikipedia)说得简单一些,它是在一个特殊的数据库事件,如INSERT或DELETE发生时,自动激活的一段代码。触发器可方便地用于日志记录、对单个表格到其他链接式表格进行自动的“层叠式”更改、或保证对表格关系进行自动更新。当一个新整数值增加到数据库域中时...
标签: 电脑入门
一、 触发器的相关对话框内容介绍 1、计时选项卡内容 图 1 计时选项卡中含有五项内容:开始、延迟、速度、重复和触发器。 开始:指动画的触发条件。单击时指鼠标单击对象时的运行预设的动画效果;之前指预设的动画效果在上一动画开始前运行;之后指预设的动画效果在上一动画结束后运行。 延迟:指动画运行时的延迟时间,可以通过单击添加...
功能: 1、 允许/限制对表的修改 2、 自动生成派生列,比如自增字段 3、 强制数据一致性 4、 提供审计和日志记录 5、 防止无效的事务处理 6、 启用复杂的业务逻辑 开始 create trigger biufer_employees_department_id before insert or update of department_id on employees referencing old as old_value new as new_value for...

经验教程

635

收藏

6
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部