???????????
解决方案 »
- (小菜请教)数据库连接生成并使用完以后,系统是如何销毁和回收资源的
- exec('mysqldump -uroot -proot dbName xxxxx > myFile'); 之后文件如何释放?
- 关于mysql 数据库备份。
- MYSQL语句出错 #1054 - Unknown column '1E' in 'field list' 事情紧急,大侠速速现身救救小弟!!!!天亮前没解决我死定了!!
- mysql select语句变慢
- 看看你能写出这个查询么?
- mysql文件大小的疑问?
- 腾讯晕数据库mysql有5.1 和5.5,我该选哪个
- 不同数据库的同名表数据合并
- 急,在线等,关于Geometry的ST_Distance
- mysql 中文成??怎么办 急
- 还原数据库时出现问题Unknown MySQL server
DELIMITER $$USE `et`$$CREATE
TRIGGER `testref` BEFORE DELETE ON `test1`
FOR EACH ROW BEGIN
UPDATE test4 SET b4 = b4- OLD.a1 WHERE a4 =OLD.a1;
END;
$$
DELIMITER ;
当b4<0时就抛出异常,怎么写啊????
很简单 ,写个错误的语句就行了。 参考下贴。http://blog.csdn.net/ACMAIN_CHM/archive/2009/07/25/4380183.aspx
MySQL 中如何在触发器里中断记录的插入或更新?
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter //
mysql> CREATE PROCEDURE handlerdemo ()
-> BEGIN
-> DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
-> SET @x = 1;
-> INSERT INTO test.t VALUES (1);
-> SET @x = 2;
-> INSERT INTO test.t VALUES (1);
-> SET @x = 3;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> CALL handlerdemo()//
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @x//
+------+
| @x |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
注意到,@x是3,这表明MySQL被执行到程序的末尾。如果DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1; 这一行不在,第二个INSERT因PRIMARY KEY强制而失败之后,MySQL可能已经采取默认(EXIT)路径,并且SELECT @x可能已经返回2。
CREATE PROCEDURE sp_call_jobs()
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''
BEGIN
declare _row,_err,_count int default 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;
while _row<3 DO
START TRANSACTION;
insert into t1(cond_val)values(null);
COMMIT;
if _err=1 then
set _count=_count+1;
end if;
set _row=_row+1;
end while;
select _count;
END;