如何同时使用事务和存储过程?

时间:2015-11-08 05:33:41

标签: mysql mysql-workbench mysql-error-1064

创建一个存储过程,返回图书馆所拥有的图书的总副本,给定标题A. 首先,找到A的标准数(S)。 然后,浏览ITEM表以查找标准Number = S的元组。 然后,将副本数量加在一起以查找整个库系统拥有的总副本数。请教我如何修复这些代码?

use library;

select * from item;
DELIMITER $$
DROP PROCEDURE IF EXISTS FindNumberOfCopies;

CREATE PROCEDURE FindNumberOfCopies ( IN itemTitle varchar(150))
BEGIN
SELECT copies FROM item WHERE title = itemTitle;
ROLLBACK;
END;
START TRANSACTION;
    UPDATE item SET copies = newCopies where title = itemTitle;
COMMIT;
END
$$

1 个答案:

答案 0 :(得分:1)

DROP PROCEDURE IF EXISTS FindNumberOfCopies;
DELIMITER $$
CREATE PROCEDURE FindNumberOfCopies
( 
 IN itemTitle varchar(150)
)
BEGIN
    SELECT copies FROM item WHERE title = itemTitle;

    UPDATE item SET copies = newCopies where title = itemTitle;
END
$$
DELIMITER ;

select没有任何意义。您的交易没有意义。您回滚了甚至没有发生的事务。

每个sql调用都是一个事务。你用反式包裹一个trans。在这个编辑的过程中,我以某种方式删除了1064