[解決済み] TSQL - BEGIN ... ENDブロックの中でGOを使用する方法。ENDブロックの中でGOを使うには?
2022-11-21 08:55:39
質問
複数の開発用データベースからステージング/プロダクションに変更を自動的に移行するためのスクリプトを作成しています。 基本的には、変更スクリプトの束を受け取り、それらを 1 つのスクリプトにマージし、各スクリプトを
IF whatever BEGIN ... END
ステートメントでラップします。
しかし、一部のスクリプトでは
GO
ステートメントを必要とし、例えば、SQL パーサーが新しいカラムを作成した後にそれを知ることができるようにします。
ALTER TABLE dbo.EMPLOYEE
ADD COLUMN EMP_IS_ADMIN BIT NOT NULL
GO -- Necessary, or next line will generate "Unknown column: EMP_IS_ADMIN"
UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever
しかし、これを
IF
ブロックで囲みます。
IF whatever
BEGIN
ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL
GO
UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever
END
を送信しているので、失敗します。
BEGIN
を送信しているからです。
END
. しかし、もし私が
GO
を削除すると、不明なカラムがあるとして再び文句を言われます。
単一の
IF
ブロック内で同じカラムを作成し、更新する方法はありますか?
どのように解決するのですか?
私は同じ問題に直面し、最終的にそれを解決するために使用することができました。 SET NOEXEC .
IF not whatever
BEGIN
SET NOEXEC ON;
END
ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL
GO
UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever
SET NOEXEC OFF;
関連
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] TSQLを使用してデータベース内のすべてのテーブルのリストを取得するにはどうすればよいですか?
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み] TSQLのdatetimeフィールドからYYYY-MM-DD形式の日付を取得するにはどうすればよいですか?
-
[解決済み】TSQLでPRINTバッファをフラッシュする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
windows mysql prompt access denied for user ''@'localhost' to database.
-
[解決済み] 指定されたスキーマにテーブルが存在するかどうかを確認する方法
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] 最初の行への結合方法
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み] SQLサーバーで行を列に効率的に変換する
-
[解決済み] SQL/mysql - Select distinct/UNIQUE but return all column?