https://dev.mysql.com/doc/refman/8.0/en/commit.html
如果事务中的SELECT语句调用存储函数,并且存储函数中的语句失败,则该语句回滚。如果随后对事务执行ROLLBACK,则整个事务回滚。
你能给予我一个关于那部分文档的例子吗?
根据我的理解,如果存储的函数失败,整个事务都会失败,而不仅仅是SELECT a_stored_function();
我很困惑,文档中是否有错误?
https://dev.mysql.com/doc/refman/8.0/en/commit.html
如果事务中的SELECT语句调用存储函数,并且存储函数中的语句失败,则该语句回滚。如果随后对事务执行ROLLBACK,则整个事务回滚。
你能给予我一个关于那部分文档的例子吗?
根据我的理解,如果存储的函数失败,整个事务都会失败,而不仅仅是SELECT a_stored_function();
我很困惑,文档中是否有错误?
1条答案
按热度按时间jc3wubiy1#
这会故意在函数中造成错误,试图将一个8个字符的字符串填充到一个局部变量
varchar(3)
中。它太长了,所以当我们用这个参数调用函数时会导致错误:这是否回滚在同一事务期间完成的
INSERT
?证明是当我们在提交事务后SELECT
。结果:
INSERT
未回滚。仅回滚了调用带有错误的函数的单个语句(“回滚”SELECT
没有明显的效果)。P.S.:这种快速的概念验证测试是你作为程序员应该能够自己做的事情。我想这就是上面RiggsFolly的评论所指的。