문제

SQL을 사용하여 데이터베이스에서 테이블 생성을 시뮬레이션하는 표준 방법이 있습니까? 테이블이 생성되기를 원하지 않습니다. 만들 수 있는지 확인하십시오. 한 가지 방법은 그것을 만들고 다시 삭제하는 것입니다. 다른 방법이 있습니까?

도움이 되었습니까?

해결책

대부분의 주요 서버는 트랜잭션 DDL을 지원하므로 다음을 따라 무언가를 할 수 있습니다.

begin transaction

create table Foo ...

rollback transaction

이론적으로 오류의 경우 클라이언트에 다시보고해야하지만 테이블은 완전히 생성되지 않습니다.

다른 팁

관심있는 SQL DBM에 따라 다릅니다. 예를 들어 Postgres는 트랜잭션 DDL을 지원하고 다음은 작동합니다.

START TRANSACTION;
CREATE TABLE ... ();
<check for error here>
ROLLBACK;

MySQL을 사용하는 경우 과도 저장 엔진을 사용하여 만들 수 있습니다. 메모리 .

실제로, 당신은 실제로 모든 것이 정상인지 확인하기 위해 그것을 만들어야합니다.

외국의 주요 참조, 기본 또는 확인 제약 조건 또는 계산 열에서 사용되는 기능은 실행 시간까지 확인되지 않습니다.

하나의 기본 방법 (SQL Server)은 사용하는 것입니다.fmtonly를 설정하십시오".

진술을 확인하는 데 유용하지만 모든 것을 말하지는 않지만 (예 : 테이블이 이미 존재하는지).

이것은 성공할 것입니다 :

SET FMTONLY ON
EXECUTE ('CREATE TABLE SomeTable(SomeField INTEGER)')
SET FMTONLY OFF

이것은 그렇지 않을 것입니다 :

SET FMTONLY ON
EXECUTE ('CREATE TABLE SomeTable(dodgysyntax)')
SET FMTONLY OFF

이 접근법은 아마도 내가 과거에 사용한 Select 문에 더 유용 할 것입니다. 실제로 진술을 실행하지는 않지만 메타 데이터를 반환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top