我有这个STP:
CREATE DEFINER=`user1`@`%` PROCEDURE `test`(
OUT result TINYINT
)
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET result = -1;
ROLLBACK;
END;
START TRANSACTION;
INSERT INTO testtable (field1, field2) VALUES (11, 22);
SET result = 1;
END
在MySQLWorkbench(6.3 64b)中执行后,testtable
有新记录。我虽然没有提交数据,因为没有提交声明。
然后我尝试再次通过C#客户端调用该STP,这次,新数据不会被提交。
请帮我解释这个问题,我不明白在Workbench中调用STP和另一个客户端调用STP之间有什么不同。
感谢。
答案 0 :(得分:1)
不同之处在于,当您在mysql workbench中再次查询表时,您处于同一会话中。即使您的更改尚未提交,即使您的更改未提交,您仍然可以看到它们,因为允许相同的客户端会话看到未经修改的更改。
但是,如果启动mysql workbench或mysql shell的新会话,您将看不到通过现有工作台会话所做的更改。