Về cơ học, COMMIT thực hiện giao dịch. Nghĩa là, một giao dịch là tất cả hoạt động (một hoặc nhiều câu lệnh DML) xảy ra giữa hai câu lệnh COMMIT (hoặc ROLLBACK).
Trong Oracle một tuyên bố DDL là một giao dịch theo đúng nghĩa của nó đơn giản chỉ vì một COMMIT tiềm ẩn được phát hành trước khi câu lệnh được thực hiện và một lần nữa sau đó.
Từ góc độ thiết kế hệ thống, giao dịch là đơn vị kinh doanh của công việc. Nó có thể bao gồm một tuyên bố DML đơn lẻ hoặc một vài trong số chúng. Nó không quan trọng: chỉ có giao dịch đầy đủ yêu cầu COMMIT. Nó theo nghĩa đen không có ý nghĩa để ban hành một COMMIT trừ khi hoặc cho đến khi chúng tôi đã hoàn thành một đơn vị kinh doanh toàn bộ công việc.
Đây là một khái niệm then chốt. COMMIT không chỉ giải phóng khóa. Trong Oracle họ cũng phát hành chốt, chẳng hạn như danh sách giao dịch quan tâm. Điều này có tác động vì mô hình nhất quán của Oracle đọc. Các ngoại lệ như ORA-01555: SNAPSHOT TOO OLD
hoặc ORA-01002: FETCH OUT OF SEQUENCE
xảy ra do các cam kết không phù hợp. Do đó, nó là rất quan trọng cho các giao dịch của chúng tôi để treo vào ổ khóa cho miễn là họ cần chúng.
'truncate' xóa dữ liệu trực tiếp mà không cần sao chép dữ liệu vào Vùng bảng quay vòng. Là một tuyên bố DDL. – danihp
DCL có phải được đính kèm không? tức là cấp + thu hồi – toop
Hợp nhất. Cũng chọn để cập nhật mất khóa, mặc dù nó không sửa đổi bất cứ điều gì. –