私はT-SQLトランザクションをよく理解しています。トランスを開始し、最終的にロールバックまたはコミットします。「;」の関係は何ですか?/'GO'/SQL Serverのトランザクション
ただし、バッチレベルとは何ですか?これらの演算子は何をしていますか?3210と'GO'
3つの用語の関係は何ですか?
私はT-SQLトランザクションをよく理解しています。トランスを開始し、最終的にロールバックまたはコミットします。「;」の関係は何ですか?/'GO'/SQL Serverのトランザクション
ただし、バッチレベルとは何ですか?これらの演算子は何をしていますか?3210と'GO'
3つの用語の関係は何ですか?
GO
はT-SQLステートメントではありません。 GO
は、スクリプト内の文のブロックの終わりを示すために使用されるSQL Serverツールおよびユーティリティによって使用されるバッチ区切り文字です。スクリプト内でGO
が検出されると、ツールは実行のためにSQL Serverに単一のバッチとして前の文ブロックを送信します。
セミコロンは、SQLステートメントの終了を示すために使用されるANSI標準のステートメントターミネーター言語要素です。これらのターミネータは解析を容易にします。ほとんどの場合、T-SQLではセミコロンを省略することができますが、共通テーブル式(WITH
で導入されています)など、次のステートメントが新しいキーワードの場合は、ステートメントターミネータが必要です。ターミネータを省略することは、今日では廃止され、下位互換性のために提供されています。
;ステートメントを終了します。 GOは一連のステートメントを終了します。 ;明示的な使用が必要なMERGEのような特定のステートメントを実行しない限り、実際には必要ありません。
スクリプトは( 'go'と ';'によって)分割され、SQL Serverに送信して1つずつ実行します。 – Xin
@ Xin。正しい。 SQL Serverは個々のバッチのみを表示します( 'GO'ターミネータなし)。 –
if 'statement1;文2;文3文4文5 'を実行すると、サーバはexec [1 + 2 + 3 + 4]と[5]を実行します。または[1] [2] [3] [4,5]?ありがとう – Xin