programing

트랜잭션 내에서 테이블 자르기

goodcopy 2021. 1. 15. 19:18
반응형

트랜잭션 내에서 테이블 자르기


SQL "truncate table"명령을 트랜잭션 내에서 사용할 수 있습니까? 나는 앱을 만들고 있고 내 테이블에는 수많은 레코드가 있습니다. 모든 레코드를 삭제하고 싶지만 앱이 실패하면 트랜잭션을 롤백했습니다. 각 레코드를 삭제하는 데 시간이 오래 걸립니다. truncate table을 사용하고 있는지 궁금합니다. 트랜잭션을 롤백하고 실패시 데이터를 다시 가져올 수 있습니까? 자르기 테이블이 각 삭제를 트랜잭션 로그에 기록하지 않는다는 것을 알고 있지만 롤백이 작동하도록 페이지 할당 해제를 로그에 기록하는지 궁금합니다.


SQL Server에서는 트랜잭션에서 TRUNCATE를 롤백 할 수 있습니다. 언급했듯이 페이지 할당 해제를 로그에 기록합니다.


Oracle에서 TRUNCATE TABLE은 트랜잭션에서 사용할 수 없거나 더 정확하게는 롤백 할 수없는 DDL 문입니다. AFAIK, 문이 실행될 때 진행중인 트랜잭션이 있으면 트랜잭션이 커밋되고 TRUNCATE가 실행되고 취소 할 수 없습니다.

Informix에서 TRUNCATE의 동작은 약간 다릅니다. 트랜잭션에서 TRUNCATE를 사용할 수 있지만 그 후에 허용되는 유일한 명령문은 COMMIT 및 ROLLBACK입니다.

다른 DBMS는 TRUNCATE TABLE의 동작에 대한 고유 한 해석을 가지고있을 것입니다.

참조 URL : https://stackoverflow.com/questions/1522931/truncate-table-within-transaction

반응형