-1
データは操作が正常に完了したときにのみデータベースにコミットされている場合、我々は指定された例のコミットとロールバック
-
チェックツー
check
(ソートの)を置くことができます。 -
トランザクションが失敗した場合は、データをロールバックする必要があります。
このワン
DELIMITER $$
CREATE PROCEDURE `sp_fail`()
BEGIN
DECLARE `_rollback` BOOL DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET `_rollback` = 1;
START TRANSACTION;
UPDATE customer SET age= 20 WHERE name='stark';
UPDATE customer SET age= 20 WHERE name='brian'; -- fail as there is no name as brian in the table customer
IF `_rollback` THEN
SELECT 'The transaction has failed' AS 'Result';
ROLLBACK;
ELSE
SELECT 'The transaction was successful' AS 'Result';
COMMIT;
END IF;
END$$
DELIMITER ;
ようstackoverflowのitself.Iで回答の一つのその鉱山変更されたバージョンは、上記の点に言及したが、ときに私が呼び出しを解決するために、これを使用して考えていましたプロシージャは正常に実行されますが、行は影響を受けません。なぜですか? ありがとうございます。
あなたの質問はあまりにも曖昧です。詳細を追加してください。 – Drew
[this](http://dev.mysql.com/doc/refman/5.7/en/commit.html)のようになりますか? – PaulF