MySQL ストアドプロシージャでトランザクションを使用するには

MySQLのストアドプロシージャでは、トランザクションはSTART TRANSACTIONまたはBEGINステートメントで開始し、COMMITステートメントでコミット、ROLLBACKステートメントでロールバックします。

以下に、MySQL ストアドプロシージャでトランザクションを使用する方法の例を示します。

DELIMITER //

CREATE PROCEDURE example_procedure()
BEGIN
  -- 开始事务
  START TRANSACTION;

  -- 执行一些操作
  INSERT INTO table1 (column1) VALUES ('Value 1');
  UPDATE table2 SET column2 = 'Value 2' WHERE id = 1;

  -- 提交事务
  COMMIT;
END //

DELIMITER ;

上記の例では、START TRANSACTION 文でトランザクションを開始し、何らかの操作を実行し、最後に COMMIT 文でトランザクションをコミットします。操作の実行中にエラーが発生した場合は、ROLLBACK 文でトランザクションをロールバックできます。(例:)

DELIMITER //

CREATE PROCEDURE example_procedure()
BEGIN
  -- 开始事务
  START TRANSACTION;

  -- 执行一些操作
  INSERT INTO table1 (column1) VALUES ('Value 1');
  UPDATE table2 SET column2 = 'Value 2' WHERE id = 1;

  -- 检查是否有错误
  IF (CONDITION) THEN
    -- 回滚事务
    ROLLBACK;
  ELSE
    -- 提交事务
    COMMIT;
  END IF;
END //

DELIMITER ;

上記の例のようにもしIF文の条件のようにある条件が満たされればそのトランザクションはロールバックされ、そうでなければトランザクションはコミットされます。

bannerAds