트랜잭션 내에서 테이블 잘라내기
SQL "table 잘라내기" 명령을 트랜잭션 내에서 사용할 수 있습니까?저는 앱을 만들고 있고 제 테이블에는 수많은 레코드가 있습니다.모든 기록을 삭제하고 싶지만 앱이 실패하면 거래를 롤백하기로 했습니다.각 레코드를 삭제하는 데 시간이 매우 오래 걸립니다.잘라내기 테이블을 사용하는 경우에도 트랜잭션을 롤백하고 실패 시 데이터를 다시 가져올 수 있는지 궁금합니다.잘라내기 테이블이 각각의 삭제를 트랜잭션 로그에 기록하지 않는다는 것을 알고 있지만 롤백이 작동하도록 페이지 할당 취소를 로그에 기록하는지 궁금합니다.
SQL Server에서는 트랜잭션에서 TRUNCATE를 롤백할 수 있습니다.말씀하신 대로 로그에 페이지 할당 해제를 기록합니다.
Oracle에서 TRUNKATE TABLE은 트랜잭션에 사용할 수 없는 DDL 문입니다(더 정확하게는 롤백할 수 없습니다).FAIK, 문이 실행될 때 진행 중인 트랜잭션이 있으면 트랜잭션이 커밋된 다음 TRUNCATE가 실행되어 실행을 취소할 수 없습니다.
Informix에서 TRUNKATE의 동작은 약간 다릅니다. 트랜잭션에서 TRUNKATE를 사용할 수 있지만 그 이후에 허용되는 문은 COMMIT 및 ROLBOLLBACK뿐입니다.
다른 DBMS는 TRUNKATE TABLE의 동작에 대한 고유한 해석을 가지고 있을 것입니다.
Postgre의 공식 문서를 읽는다면,SQL, TRUNKATE TABLE 문은 트랜잭션 안전하다고 합니다.
언급URL : https://stackoverflow.com/questions/1522931/truncate-table-within-transaction
'codememo' 카테고리의 다른 글
| Git: 디렉터리의 모든 파일을 다른 분기에서 복사합니다. (0) | 2023.07.13 |
|---|---|
| Oracle에서 Timestamp_to_scn 및 Scn_to_timestamp를 사용하는 방법은 무엇입니까? (0) | 2023.07.13 |
| 오류: 사용자를 추가할 수 없음: 테스트에서 {createUser: (0) | 2023.07.07 |
| "int"와 "int_fast16_t"의 차이점은 무엇입니까? (0) | 2023.07.07 |
| Mongoose 채우기 하위 하위 문서 (0) | 2023.07.07 |