출처 : http://youngsam.kr/696

 

EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'

EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'

EXEC sp_MSForEachTable 'DELETE FROM ?'

EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'

EXEC sp_MSForEachTable 'ALTER TABLE ? ENABLE TRIGGER ALL'

 

하지만, 그대로 사용하기엔 좀 부족해 보인다.

아래 사항을 추가해서 사용해야겠다.

1.     삭제하지 않을 테이블을 지정할 수 있을 것.

2.     DELETE문 대신 TRUNCATE TABLE문을 사용할 수 있다면… TRUNCATE TABLE문을 쓰도록 분기할 것. (테이블이 VIEWschema binding되어 있다면… DELETE문을 쓸 수 없을 듯)

3.     IDENTITY 속성의 컬럼을 포함한 경우, Reseed 할 것.
이때, 한번도 데이터가 INSERT되지 않았거나 TRUNCATE한 테이블과그렇지 않은 테이블의 Reseed 값을 달리 적용해야 함에 유의!!!



 


EXEC sp_MSForEachTable 'TRUNCATE TABLE ?'
한줄 테이블 삭제
EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
EXEC sp_MSForEachTable 'TRUNCATE TABLE ?'
EXEC sp_MSForEachTable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
외래키 제약조건 무시, 세줄 테이블 삭제

+ Recent posts