Mysql怎么在触发器中抛出异常和取消操作
2009-07-29 16:58
411 查看
利用一个控制表t_control
例:
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> 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 触发器 trigger 中断操作 抛出异常
- c# Task编程一个task抛出异常后怎么取消其他线程
- MySql触发器,以及如何手动抛出异常
- MYSQL抛出异常+禁止删除触发器、同步插入触发器
- JAVA操作MySQL tImestamp列值为0时抛出异常的处理
- 如何Mysql触发器中抛出一个异常
- Excel在vc中怎么操作单元格的字体、颜色、加线框(和异常的抛出)
- hibernate操作mysql时抛出Lock wait timeout exceeded; try restarting transaction异常
- 编写操作数据库的JAVA程序时需要的连接MySQL数据库的JDBC连接包mysql-connector-java-5.1.10.zip怎么安装
- MySQL: table、view、trigger、procedure、index (表、主键、UNIQUE Key、列、索引、视图、触发器、存储过程)查看、修改、更新、删除操作
- Data too long for column 'name' at row 1 mysql的抛出异常的解决办法
- mysql事务管理及spring声明式事务中主动异常抛出使数据库回滚
- 禁用约束和触发器(数据库操作时临时取消约束,来避开数据库约束的引起的操作问题)
- 关于抛出跨线程操作UI线程的异常的处理
- C#中Mysql操作的异常: MySQL Connector/Net does not currently support distributed transa
- jfinal使用定时任务quartz操作数据库抛出异常:com.alibaba.druid.pool.DataSourceClosedException: dataSource already clo
- Mysql操作数据库异常Ignoring query to other database
- Task:取消异步计算限制操作 & 捕获任务中的异常
- mysql之 触发器(trigger):监视某种情况,并触发某种操作。
- mysql 5.6 存储过程+事务+游标+错误异常抛出+日志写入