gpt4 book ai didi

MySQL - 如果在事务期间插入失败,是否总是会引发异常或警告?

转载 作者:行者123 更新时间:2023-11-29 20:56:16 25 4
gpt4 key购买 nike

我正在使用 MySQL Connector/Python 调用以下存储过程:

CREATE PROCEDURE AddDishReview
(
id INT,
OUT retVal TINYINT(1)
)
this_proc:BEGIN

DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
END;

START TRANSACTION;

INSERT INTO Table1 VALUES (id);

IF ROW_COUNT() < 1 THEN
ROLLBACK;
LEAVE this_proc;
END IF;

SET @table1RefID = LAST_INSERT_ID();
INSERT INTO Table2 VALUES (@table1RefID);

IF ROW_COUNT() < 1 THEN
ROLLBACK;
LEAVE this_proc;
END IF;

SET retVal = 1;
COMMIT;
END //
DELIMITER ;

我的问题是,如果插入失败,是否总是会引发异常或警告(这会触发退出处理程序)?我只是情不自禁地感觉所有的IF ROW_COUNT < 1检查是不必要的。但我把它们放在那里是因为我不确定插入是否有可能在不引发异常/警告的情况下失败(这将导致执行继续并且 ROW_COUNT 为 0)。

tl;dr:是否可以安全地假设如果没有引发异常或警告,则插入成功?

最佳答案

是的,如果插入语句失败,您将收到错误或警告。 Mysql 文档 sql mode setting有一个很好的汇总表,描述了何时收到错误以及何时收到各种 sql 模式/忽略场景的警告。正如您从链接表中看到的那样,不会忽略任何警告,但错误可能会减少为警告。

关于MySQL - 如果在事务期间插入失败,是否总是会引发异常或警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37604349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com