1. ホーム
  2. sql

[解決済み] ビューが存在する場合は削除する

2022-03-06 10:03:36

質問

私は最初にビューをドロップして、それを作成するスクリプトを持っています。 私はテーブルを削除する方法を知っています。

IF EXISTS (SELECT * FROM sys.tables WHERE name = 'table1' AND type = 'U') DROP TABLE table1;

ということで、viewsも同じようにしました。

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

と表示され、エラーが発生しました。

CREATE VIEW」はクエリバッチの最初のステートメントでなければなりません。

どのように解決するのですか?

あなたのexistsの構文は間違っています、あなたは以下のようにDDLをgoで区切る必要があります。

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

create view tst
as
select * from test

また、以下のようにobject_idで存在確認ができます。

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

create view tst
as
select * from test

SQL 2016では、以下の構文でドロップすることができます。

Drop view  if exists dbo.tst

SQL2016 CU1 からは、以下のようになります。

create or alter view vwTest
as
 select 1 as col;
go