sql >> データベース >  >> RDS >> Mysql

BEGIN ... END vs START TRANSACTION ... COMMIT

    MySQL5.7とMySQL8の両方で、BEGIN およびEND T-SQLと同じで、C、Java、C#などの中括弧のように、「コードのブロック」とも呼ばれる「複合ステートメント」を表します。

    ただし、BEGIN キーワード (紛らわしい)BEGIN WORKのエイリアスとしてオーバーロード およびSTART TRANSACTION 、およびそれらのセマンティクスは、ストアドプログラム内で使用されているかどうかによって異なります。

    だから:

    • START TRANSACTION
      • 常にトランザクションを開始します。この構文をお勧めします。
    • BEGIN
      • ストアドプロシージャ、関数、トリガー、またはイベントを使用している場合は、BEGIN それ自体が複合ステートメントの開始を示します。 START TRANSACTIONのみを使用できます トランザクションを開始します。
      • MySQLに対してSQLを直接実行している場合、これはトランザクションも開始します(BEGIN WORKとして解釈されるため) )。ただし、このように使用するのはばかげて混乱するため、避けてください。
    • BEGIN WORK
      • これはSTART TRANSACTIONのエイリアスです 。混乱を防ぐために、これを完全に使用することは避けたいと思います。



    1. SQLServerでの動的SQL実行

    2. PDO-'while'ループでAssocをフェッチします

    3. Doctrine2:関連するエンティティの削除と永続化に関するさまざまな動作

    4. MySQLとPHPで計算を行う