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

SQL Server:バッチ間でGOステートメントを使用する必要がありますか?

    これらは厳密には必須ではありません。SQLServerManagementStudioがこの時点までのステートメントを実行し、続行するための単なる指示です。 GO ない T-SQLキーワードなど-SSMSで機能する単なる命令です。

    場合によっては、GOが必要になります-例:テーブルに列を追加してから再度選択する場合は、列の追加とクエリの間にGOが必要です。

    例えば。これを実行しようとすると、SSMSからエラーが発生します:

    ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
    
    SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
    

    結果:

    重要なのは、SSMSはステートメント全体を一度に検証しようとしているのですが、SELECTステートメントでは、DateTimeStampがないことについて文句を言うでしょう。 列。

    ALTER TABLE (sometable) ADD DateTimeStamp DATETIME
    GO       
    
    SELECT ID, DateTimeStamp FROM (sometable) WHERE ID > 5
    

    GOを入れた場合 SSMSはステートメント全体を事前に解析および検証しないため、2つのステートメント間で機能します。最初の部分を実行し、次に2番目の部分のみを解析します(GOの後)。 。

    しかし、このような状況を除いて、GOはほとんど必要ありません。



    1. SQL Server ODBCドライバーをアップグレードしましたが、パフォーマンスに悪影響がありました。私に何ができる?

    2. PerlのDBIとOracleでマルチスレッドを使用できますか?

    3. XMLフラットファイルとリレーショナルデータベースのバックエンド

    4. SQL:優先度で並べ替えますが、最後に0を付けます