Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql存储过程中的执行保证和失败时回滚_Mysql_Sql_Database_Stored Procedures_Consistency - Fatal编程技术网

mysql存储过程中的执行保证和失败时回滚

mysql存储过程中的执行保证和失败时回滚,mysql,sql,database,stored-procedures,consistency,Mysql,Sql,Database,Stored Procedures,Consistency,MySQL存储过程 DELIMITER $$ USE `RMS`$$ DROP PROCEDURE IF EXISTS `posTransactionEntry`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `posTransactionEntry`(OUT trxID INT) BEGIN DECLARE trxID INT; INSERT INTO `RMS`.`transaction` (`MemberID`,`UserID`,`T

MySQL存储过程

DELIMITER $$

USE `RMS`$$

DROP PROCEDURE IF EXISTS `posTransactionEntry`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `posTransactionEntry`(OUT trxID INT)
BEGIN

DECLARE trxID INT;

INSERT INTO `RMS`.`transaction`
(`MemberID`,`UserID`,`Type`,`UID`)
VALUES (NULL,1,0,'56c54e5c-075d-458d-9845-cf410f8a60ec');

SET trxID=(SELECT ID FROM `transaction` WHERE `transaction`.`UID`='56c54e5c-075d-458d-9845-cf410f8a60ec');
INSERT INTO `RMS`.`transactionentry`
        (
         `TransactionID`,
         `ItemID`,
         `Quantity`,
         `Unitcost`,
         `Price`,
         `SoldPrice`,
         `ReasonID`)
VALUES (trxID,28,10,23.23,10,10,NULL);
UPDATE `transaction` SET `transaction`.`UID`=0 WHERE `transaction`.`ID`=trxID;

END$$

DELIMITER ;
此存储过程中有四条语句。如果发生错误,我们如何找到由于哪个语句错误而产生的错误,以及特定语句成功执行的原因。若出现错误,我们如何知道哪个语句生成错误,以及如何相应地回滚所有已执行的语句


意思是一致性和保证,我们如何才能实现?

将您认为可以通过错误处理的每个语句放在
开始和结束
块中

您可以捕获块中抛出的错误,并可以指定一个变量,该变量将告诉您错误真正发生的位置

可以找到
开始和结束的文档和示例

可以找到
错误代码列表

该函数用于了解可以找到由
UPDATE
语句更新的行数