여러 개발 데이터베이스의 변경 사항을 스테이징 / 프로덕션으로 자동 마이그레이션하는 스크립트를 생성하고 있습니다. 기본적으로 많은 변경 스크립트를 사용하여 단일 스크립트로 병합하여 각 스크립트를 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
블록 내에서 동일한 열을 만들고 업데이트하는 방법이 있습니까?