Table Drop할 때 FK 관계 정리

DB에 테이블을 일괄 생성하고, 그 후 일괄 FK를 맺어주는 작업을 하는데, 이것이 배치 프로그램이라 프로그램이 실행하면서는 DB의 모든 Table을 Drop 해야합니다. (테이블에는 데이터가 1 row도 없습니다.)

혹시 SQL Server에 Table을 Drop하면서 Relation도 함께 제거해주는 기능이 있을까요?

좋아요 3

이글 참고해 보시겠어요?

좋아요 3

링크해주신 내용에서 맨 첫번째 내용이 제게 필요한 것 같은데 이것은 MySQL 만 가능하다고 합니다.
SQL Server에서는 테이블마다 하나씩 해줘야한다고 하네요.

때문에 제가 한 방법은,

string query = @"SELECT  TABLE_NAME, CONSTRAINT_NAME
                 FROM    INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
                 WHERE   CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME
                                             FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS
                                             WHERE  CONSTRAINT_TYPE = 'FOREIGN KEY' )";

위의 쿼리로 DB안의 모든 제약조건을 검색하여,

ALTER TABLE {TABLE_NAME} DROP {CONSTRAINTS}

로 모든 제약 조건을 제거한 다음, 모든 테이블을 drop 했습니다.

하면서 하나 새롭게 알았던 것은, TABLE_NAME은 DB에서 파라미터로 사용할 수 없기 때문
SQL의 CURSOR 문법으로 제약조건과 테이블 명을 검색해서 하나씩 CURSOR로 받아서 쓸 수는 없습니다.
따라서 프로그램에서 제약조건과 테이블명을 쿼리해온 다음, 쿼리를 만들어서 보낼 때 파라미터없이 제약조건과 테이블명을 문자열로 사용한 쿼리를 만들어서 보냈습니다.

좋아요 2