【发布时间】:2016-10-12 07:43:09
【问题描述】:
问题是写一个事务语句来更新一个数据库列。它可以在可以使用DECLARE 和IF 语句的过程中完成。但是,要求是没有程序。这可以实现吗?这是我尝试过的:
DELIMITER $$
CREATE PROCEDURE `sp_updatecolumn`()
BEGIN
DECLARE `_rollback` BOOL DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
START TRANSACTION;
UPDATE mytable
SET mycolumn=1
WHERE mycolumn=2;
IF `_rollback` THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END$$
DELIMITER ;
最好的问候,
【问题讨论】:
-
当然,如果你说你不想使用存储过程,那就不要。查看以包装它的编程语言返回的错误代码
-
感谢回复,我在mysql workbench中运行上面的代码。问题是 DECLARE 和 IF 是特定于存储程序的。我想我可以使用 IF() 函数而不是 IF 语句和 SET 而不是第一个 DECLARE。但是处理程序呢?
-
workbench 类似于 mysql 命令行工具界面。正如你所说,有一大堆构造仅适用于存储程序
-
如你所说但是,要求是没有程序。 ...所以很难知道你想从某人那里得到什么
标签: mysql stored-procedures transactions