DB에 테이블을 일괄 생성하고, 그 후 일괄 FK를 맺어주는 작업을 하는데, 이것이 배치 프로그램이라 프로그램이 실행하면서는 DB의 모든 Table을 Drop 해야합니다. (테이블에는 데이터가 1 row도 없습니다.)
혹시 SQL Server에 Table을 Drop하면서 Relation도 함께 제거해주는 기능이 있을까요?
DB에 테이블을 일괄 생성하고, 그 후 일괄 FK를 맺어주는 작업을 하는데, 이것이 배치 프로그램이라 프로그램이 실행하면서는 DB의 모든 Table을 Drop 해야합니다. (테이블에는 데이터가 1 row도 없습니다.)
혹시 SQL Server에 Table을 Drop하면서 Relation도 함께 제거해주는 기능이 있을까요?
이글 참고해 보시겠어요?
링크해주신 내용에서 맨 첫번째 내용이 제게 필요한 것 같은데 이것은 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로 받아서 쓸 수는 없습니다.
따라서 프로그램에서 제약조건과 테이블명을 쿼리해온 다음, 쿼리를 만들어서 보낼 때 파라미터없이 제약조건과 테이블명을 문자열로 사용한 쿼리를 만들어서 보냈습니다.