안녕하십니까?
김도남 님
Microsoft TechNet의 Forum
사이트를 방문해 주셔서 감사합니다.
문의 하신
“MS SQL Server Truncate, Delete 문”에 대한 답변을 드리겠습니다.
Step 1 : Truncate
-
Truncate
문은 테이블의 전체 행을 한 번에 삭제를 합니다.
-
삭제로그가 Delete문보다 단순합니다.
-
Transaction을 사용하지 않아서 데이터 복구를 할 수 가 없습니다.
-
Where
문을 사용할 수 없습니다.
-
IDENTITY의 Seed를 초기화를 합니다.
-
Truncate는 Foreign Key
설정이 되어있는 Table에 적용을 할 수 없습니다. Delete/Update
트리거가 작동을 하지 않습니다.
Msg 4712, Level 16, State 1, Line 1
테이블 'Production.Product'은(는)
FOREIGN KEY
제약
조건에
의해
참조되므로
자를
수
없습니다.
-
Index
설정을 해제 해야 합니다.
Step 2 : Delete
-
Delete문은 각 행을 제거를 합니다.
-
각 행 마다 트랜잭션 로그를 순서를 고려해서 생성을 합니다.
많은 로그를 생성을 하지만 각 행을 선택적으로 복구를 할 수 있습니다.
-
Where
문을 사용할 수 있습니다.
-
많은 행을 가진 Table을 삭제할 경우 많은 시간을 사용합니다.
-
Truncate
문처럼 Seed를 초기화할 수 있습니다.
DELETE
from Production.Product
DBCC
CHECKIDENT("Production.Product",
RESEED, 0)
참고 자료
TRUNCATE TABLE(Transact-SQL)
http://technet.microsoft.com/ko-kr/library/ms177570.aspx
DELETE
http://msdn.microsoft.com/en-us/library/aa258847(v=sql.80).aspx
DBCC CHECKIDENT(Transact-SQL)
http://technet.microsoft.com/ko-kr/library/ms176057.aspx
제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.
제시해 드린 답변이 도움이 되었기를 바랍니다.