뷰 삭제(존재하는 경우)
먼저 보기를 삭제한 다음 만들 스크립트가 있습니다.테이블을 내리는 방법을 알고 있습니다.
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'는 쿼리 배치의 첫 번째 문이어야 합니다.
당신의 기존 구문이 잘못되었으며 아래와 같이 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
또한 아래와 같이 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
SQL 2016 CU1에서 다음을 수행할 수 있습니다.
create or alter view vwTest
as
select 1 as col;
go
오류와 관련하여
'CREATE VIEW' must be the first statement in a query batch.
Microsoft SQL Server에는 다음과 같은 까다로운 요구 사항이 있습니다.CREATE VIEW
일괄 처리의 유일한 문입니다.이는 다음과 같은 몇 가지 다른 진술에도 해당됩니다.CREATE FUNCTION
그것은 사실이 아닙니다.CREATE TABLE
그러니깐 가서 계산해봐요.
해결책은 스크립트를 소규모 배치로 서버로 보내는 것입니다.한 가지 방법은 단일 문을 선택하고 실행하는 것입니다.이것은 분명히 불편합니다.
더 편리한 솔루션은 클라이언트가 스크립트를 소규모로 격리된 배치로 전송하도록 하는 것입니다.
그GO
키워드는 엄밀하게 SQL 명령어가 아니므로 실제 SQL 명령어처럼 세미콜론으로 끝낼 수 없습니다.대신 이 시점에서 스크립트를 중단하고 해당 부분을 일괄 전송하라는 지시입니다.
결과적으로 다음과 같은 글을 쓰게 됩니다.
DROP VIEW IF EXISTS … ;
GO
CREATE VIEW … AS … ;
GO
다른 데이터베이스 서버가 없습니다(Postgre).SQL, MySQL, Oracle, SQLite)에는 이와 같은 특이성이 있으므로 요구 사항은 Microsoft Only로 나타납니다.
DROP VIEW if exists {ViewName}
Go
CREATE View {ViewName} AS
SELECT * from {TableName}
Go
스키마도 충족하려면 SQL 2014에서 이 형식을 사용합니다.
if exists(select 1 from sys.views V inner join sys.[schemas] S on v.schema_id = s.schema_id where s.name='dbo' and v.name = 'someviewname' and v.type = 'v')
drop view [dbo].[someviewname];
go
저장 프로시저를 만들기 위해 그것을 밖에 버리는 것도 필요했기 때문입니다.
if exists(select 1
from sys.procedures p
inner join sys.[schemas] S on p.schema_id = s.schema_id
where
s.name='dbo' and p.name = 'someprocname'
and p.type in ('p', 'pc')
drop procedure [dbo].[someprocname];
go
언급URL : https://stackoverflow.com/questions/36133752/drop-view-if-exists
'programing' 카테고리의 다른 글
jQuery Validation 플러그인: 지정된 제출 단추에 대해 유효성 검사 사용 안 함 (0) | 2023.08.15 |
---|---|
Ajax 호출에 대한 JSON 응답에 대한 올바른 상태 코드? (0) | 2023.08.15 |
.NET 문자열이 불변인 이유는 무엇입니까? (0) | 2023.08.15 |
ODBC를 통해 MariaDB에서 액세스할 때 VBA(자동 재링크 테이블) (0) | 2023.08.15 |
경로를 지정하여 워크북을 여는 방법 (0) | 2023.08.15 |