MySQL5.7とMySQL8の両方で、BEGIN
およびEND
T-SQLと同じで、C、Java、C#などの中括弧のように、「コードのブロック」とも呼ばれる「複合ステートメント」を表します。
- MySQL 5.7: https://dev.mysql .com / doc / refman / 5.7 / en / begin-end.html
- MySQL 8.0: https://dev.mysql .com / doc / refman / 8.0 / en / begin-end.html
ただし、BEGIN
キーワードも (紛らわしい)BEGIN WORK
のエイリアスとしてオーバーロード およびSTART TRANSACTION
、およびそれらのセマンティクスは、ストアドプログラム内で使用されているかどうかによって異なります。
だから:
START TRANSACTION
- 常にトランザクションを開始します。この構文をお勧めします。
-
BEGIN
:- ストアドプロシージャ、関数、トリガー、またはイベントを使用している場合は、
BEGIN
それ自体が複合ステートメントの開始を示します。START TRANSACTION
のみを使用できます トランザクションを開始します。 - MySQLに対してSQLを直接実行している場合、これはトランザクションも開始します(
BEGIN WORK
として解釈されるため) )。ただし、このように使用するのはばかげて混乱するため、避けてください。
- ストアドプロシージャ、関数、トリガー、またはイベントを使用している場合は、
-
BEGIN WORK
:- これは
START TRANSACTION
のエイリアスです 。混乱を防ぐために、これを完全に使用することは避けたいと思います。
- これは