我有两张表,如
SAMPLETABLE1(CNT INT(5));
SAMPLETABLE2(CNT INT(5));
我有一个存储过程如下:
if let antiAliasing = dict["antAliasing"] as? [NSValue] {
UIBezierPath.interpolateCGPoints(withHermite: antiAliasing, closed: true)
}
当我运行此过程时,它返回错误“第1行的列'cnt'数据被截断”并且第一次更新被触发,这是可以的,我知道我将字符值插入到数字数据类型中。
我希望我的第一个查询回滚,如果任何查询返回异常,但它没有发生请建议。
答案 0 :(得分:0)
创建表/插入数据
CREATE TABLE sampletable1
(`CNT` INT(5))
;
INSERT INTO sampletable1
(`CNT`)
VALUES
(1)
;
CREATE TABLE sampletable2
(`CNT` INT(5))
;
INSERT INTO sampletable2
(`CNT`)
VALUES
(1)
;
<强>查询强>
SELECT * FROM sampletable1
<强>结果强>
CNT
--------
1
存储过程
我曾与CONTINUE HANDLER FOR SQLEXCEPTION
DELIMITER $$
CREATE PROCEDURE p1()
BEGIN
DECLARE doRollback BOOL DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET doRollback = 1;
SET autocommit = off;
START TRANSACTION;
UPDATE sampletable2 SET CNT = CNT + 5;
INSERT INTO sampletable1 (CNT) VALUES ('5s');
IF doRollback THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END$$
DELIMITER ;
致电p1()
CALL p1();
<强>结果强>
1 queries executed, 0 success, 1 errors, 0 warnings
Query: CALL p1()
Error Code: 1265
Data truncated for column 'CNT' at row 1
Execution Time : 0 sec
Transfer Time : 0 sec
Total Time : 0.002 sec
检查sample1表
SELECT * FROM sampletable1
<强>结果强>
CNT
--------
1