2016-03-21 20 views
14

私は最初にビューを削除してから作成するスクリプトを用意しています。 は、私はテーブルを削除する方法を知っている:ドロップビューが存在する場合

ので、私は、ビューのために同じでした
IF EXISTS (SELECT * FROM sys.tables WHERE name = 'table1' AND type = 'U') DROP TABLE table1; 

IF EXISTS (SELECT * FROM sys.views WHERE name = 'view1' AND type = 'U') DROP VIEW view1; 
create view1 as(......) 

、その後、私が得たエラー:

'CREATE VIEW' must be the first statement in a query batch.

+1

これらのコマンドの間に 'GO'を置いてください... – Shnugo

+0

私はそれを作成する前に置いています:作成...などですが、それから:データベースにはすでに 'TSB'という名前のオブジェクトがあります。 – 4est

+3

オブジェクトタイプが間違っています - 'U'ではなく 'V'を使用してください。 https://msdn.microsoft.com/en-us/library/ms190324.aspx –

答えて

42

あなたが存在している構文が間違っているとあなた以下のようにDDLを分離する必要があります

if exists(select 1 from sys.views where name='tst' and type='v') 
drop view tst; 
go 

create view tst 
as 
select * from test 

あなたはまた、SQL 2016で

if object_id('tst','v') is not null 
drop view tst; 
go 

create view tst 
as 
select * from test 

以下のようなOBJECT_IDで、存在テストをチェックすることができ、あなたはSQL2016 CU1から

Drop view if exists dbo.tst 

をドロップする構文の下に使用することができ、あなたは

create or alter view vwTest 
as 
select 1 as col; 
go 
の下に行うことができます
+2

ありがとうございました.UをVに変更して、現在作業中です!助けてくれてありがとう – 4est

+1

マイナーな訂正 - DROP VIEW dbo.tst IF EXISTSが存在する場合はDROP VIEWを読んでください。 – Rich

+0

@Rich:訂正してくれてありがとう、私は今更新します – TheGameiswar

関連する問題