如何同时使用事务和存储过程?
How to use transaction and stored procedure at the same time?
创建一个存储过程,其中 returns 我们图书馆拥有的一本书的总份数,给定书名 A。
首先求出A的标准数(S)。
然后,通过 ITEM table 找到标准 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
$$
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 调用都是一个事务。您正在用反式包裹反式。在此编辑过程中,我以某种方式删除了 1064
创建一个存储过程,其中 returns 我们图书馆拥有的一本书的总份数,给定书名 A。 首先求出A的标准数(S)。 然后,通过 ITEM table 找到标准 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
$$
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 调用都是一个事务。您正在用反式包裹反式。在此编辑过程中,我以某种方式删除了 1064