기존 테이블에 외래 키 참조가있는 새 테이블이 있습니다.다른 테이블에 외래 키 참조가있는 테이블을 삭제하는 더 간단하고 빠른 방법이 있습니까?
ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([SectionDatabaseID])
REFERENCES [dbo].[Section] ([SectionDatabaseID])
ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([TermDatabaseID])
REFERENCES [dbo].[Term] ([TermDatabaseID])
위의 방법은 자신의 자동화 된 명명 규칙의 사용하여 외래 키 제약 조건의 이름을 생성합니다 : 내가 처음으로 새 테이블을 만들 때, 나는 다음과 같은 방법으로 외부 키를 만들었습니다.
그러나 처음부터 새로 만들어 몇 가지 주요 수정 작업을 수행해야하므로 새 테이블을 삭제하려고합니다.
분명히 방금 SQL 문을 실행하면 SQL Server 데이터베이스는 새 테이블에 다른 테이블에 대한 외래 키 참조가 있음을 알리는 메시지를 표시합니다.
나는 외래 키는 우리가 그들을 삭제할 수 있도록 존재하는 것을 알아 내기 위해 다음과 같은 스크립트를 실행 들었어요 :
use perls;
SELECT 'ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME +
'] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']'
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY' and TABLE_NAME = 'NewTable'
은 위 기본적으로 내가 실행해야합니다 ALTER 문을 보여주는 결과를 제공 할 것입니다.
더 자동화 된 것이 필요합니다. 개별 외래 키 제약 조건을 개별적으로 삭제 한 다음 테이블을 삭제할 수 있어야하는 이유는 무엇입니까?
테이블을 더 간단하게 삭제하려고합니다. 위에서해야 할 일보다 쉬워 져야합니다.
다이어그램을 만들고, 모든 테이블을 추가하고, 해당 UI를 통해 FK를 삭제할 수 있습니다. – Beth
다른 테이블을 참조하는 FOREIGN KEY가있는 테이블을 문제없이 제거 할 수 있어야합니다. 문제는 외부 키가 * it *을 참조하는 테이블을 삭제하려고 할 때 발생합니다. 이러한 경우 외래 키를 먼저 찾아서 삭제해야합니다. –
나는'Drop table cascade'를 tsql에서 사용하고 싶다고 생각하니? http://stackoverflow.com/questions/4858488/sql-server-drop-table-cascade-equivalent –