2010-03-08 3 views
0

SQL Server 2005 데이터베이스에는 A와 B라는 두 개의 테이블이 있습니다. 매일 테이블 A를 자르는 서비스가 있습니다.외래 키가 참조하는 테이블 자르기

최근에 테이블 A를 참조하는 외래 키 제약 조건이 테이블 B에 추가되었습니다. 따라서 테이블 B가 비어 있더라도 테이블 A를 더 이상 잘릴 수 없습니다. 테이블 A를 잘라내는 것과 같은 결과를 얻는 방법이 있습니까?

나는 아래 접근법을 이미 시도했지만 ID는 재설정되지 않았습니다.

DBCC CHECKIDENT (TABLENAME, RESEED, 0) 

ps. 누구든지 이것을 복제본으로 지적하기 전에 여기서 다른 점은 제약 조건을 삭제하거나 생성 할 수 없다는 것입니다.

답변

1

제약 조건을 삭제할 수없는 경우 TRUNCATE TABLE을 사용할 수 없으므로 DELETE를 사용해야합니다.

DELETE TABLEA 
DBCC CHECKIDENT (TABLENAME, RESEED, 0) 

참고 : FK를 사용하지 않도록 설정하면 외래 키 제약 조건에서 참조 테이블을 절단 할 경우 중 하나

+0

문제는 DELETE TABLEA 대신 DELETE FROM TABLEA를 수행하는 것 같습니다. 절름발이 오류, 도움 주셔서 감사합니다. –

+1

훌라에게 @born : 이것들은 동일합니다 : FROM은 선택 사항입니다 .... – gbn

+0

내가 뭘 잘못하고 있었는지 모르겠습니다. 어쨌든, 이제 작동합니다. –

0

1-DISABLE related FK 
2-TRUNCATE all related tables. 
3-ENABLE the previously disabled FKs 

SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checking. 
TRUNCATE TABLE Table1; 
SET FOREIGN_KEY_CHECKS = 1; -- Enable foreign key checking. 
0

SET의 FOREIGN_KEY_CHECKS = 0 작동하지 않습니다 #은 MySQL이 빈을 반환 결과 세트 (즉, 0 행). - 외부 키 점검을 사용 불가능하게하십시오. TRUNCATE TABLE table_name; # MySQL이 빈 결과 집합을 반환했습니다 (즉, 0 행). SET FOREIGN_KEY_CHECKS = 1; # MySQL이 빈 결과 집합을 반환했습니다 (즉, 0 행). - 외래 키 검사 사용. # MySQL은 빈 결과 집합 (즉, 0 행)을 반환했습니다.

+0

이런 오래된 질문은 어쨌든 MySQL이 아닌 SQL Server와 관련이 있습니다. –

관련 문제