この作品、なぜ誰もが説明できます:GOTOラベル
use MyDb1
if NOT EXISTS (select * from sys.objects where name = 'MyTable' and type = 'U')
create table MyTable(MyColumn int not null)
use MyDb2
if NOT EXISTS (select * from sys.objects where name = 'MyTable' and type = 'U')
create table MyTable(MyColumn int not null)
しかし、これはしません:
use MyDb1
mylabel:
if NOT EXISTS (select * from sys.objects where name = 'MyTable' and type = 'U')
create table MyTable(MyColumn int not null)
if(DB_NAME()='MyDb1')
begin
use MyDb2
goto mylabel
end
流れが正しいとそうでない場合は第2回のチェックが作品を存在しますが、テーブルを作成しようとすると、次のエラーが発生します。
データベースに「MyTable」という名前のオブジェクトが既に存在します。
これを大幅に簡素化されますが、これは動作するように得ることは私に2つのほぼ同じデータベース
うわー、私も決して実現T-SQLが 'GOTO' – LittleBobbyTables
をサポートし始めそれは常にで、それをサポートしてきました少なくとも2000年から – RichardTheKiwi
誰かが興味を持っているのなら、これを使用したかったのは、私の開発環境では、ユーザテスト用と自動ユニットテスト用の2つのデータベースがあるからです。これらの両方は、ユーザーテストdbにいくつかのデフォルトデータがあることを除いては同じですが、各テストが必要なデータをセットアップするたびに単位テストdbは空です。私は単純に、同じデータベースを2回作成する便利な手段を望んでいましたが、db名に基づいて条件付きの挿入を2回行うだけでした。私は怠惰で、すべてのcreateステートメントを倍増させたくないし、インラインコマンドライン呼び出しを使うことに頼らざるを得ませんでした。 – DannyT