Đây là cách hoạt động của Oracle. INSERT đầu tiên của bạn đã được thực hiện chính xác (tức là đã chèn "1" vào bảng).
Sau đó, bạn chạy một khối PL / SQL ẩn danh chèn "3", sau đó "2" và không thành công khi cố gắng chèn "1" do vi phạm khóa chính.
Nếu ngoại lệ không được xử lý xảy ra trong quá trình thực thi khối PL / SQL đó (bạn nói rằng "Trình xử lý ngoại lệ Oracle khôi phục lại ở đây"), Oracle sẽ quay trở lại phần đầu của khối PL / SQL.
Khi bạn sử dụng trình xử lý EXCEPTION và đưa ra ROLLBACK, thì BẠN là người quyết định phải làm gì nếu điều gì đó xảy ra và điều đó là hoàn nguyên tất cả các thay đổi về COMMIT trước đó là một COMMIT được thực hiện ngầm sau khi thực hiện câu lệnh CREATE TABLE, vì vậy hãy làm theo CHÈN "1 "cũng được khôi phục.