2009-10-05 30 views
45

Lệnh SQL "cắt ngắn bảng" có thể được sử dụng trong một giao dịch không? Tôi đang tạo một ứng dụng và bảng của tôi có rất nhiều bản ghi. Tôi muốn xóa tất cả các bản ghi, nhưng nếu ứng dụng không thành công thì tôi phải quay lại giao dịch của mình. Xóa từng bản ghi mất một thời gian rất dài. Tôi tự hỏi nếu tôi sử dụng bảng cắt ngắn, tôi vẫn có thể khôi phục giao dịch và lấy lại dữ liệu của tôi trong trường hợp có lỗi không. Tôi nhận ra rằng bảng cắt ngắn không viết từng xóa vào nhật ký giao dịch, nhưng tôi tự hỏi nếu nó viết trang deallocation vào nhật ký để rollback hoạt động.Bảng cắt ngắn trong giao dịch

+1

Tôi nên làm rõ rằng tôi đang sử dụng máy chủ MSSQL 2005. –

Trả lời

44

Trong SQL Server, bạn có thể khôi phục TRUNCATE từ giao dịch. Nó viết trang deallocation vào nhật ký, như bạn đã đề cập.

+0

Cảm ơn một tấn sir. –

15

Trong Oracle, TRUNCATE TABLE là một câu lệnh DDL không thể được sử dụng trong một giao dịch (hoặc chính xác hơn, không thể được khôi phục). AFAIK, nếu có một giao dịch đang diễn ra khi câu lệnh được thực hiện, giao dịch được thực hiện và sau đó TRUNCATE được thực hiện và không thể hoàn tác.

Trong Informix, hành vi của TRUNCATE hơi khác; bạn có thể sử dụng TRUNCATE trong một giao dịch, nhưng các câu lệnh duy nhất cho phép sau đó là COMMIT và ROLLBACK.

Các DBMS khác có thể có cách diễn giải riêng của chúng về hành vi của TABLE TRUNCATE.

Các vấn đề liên quan