Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Tạo bảng oracle với tính năng tự động cam kết

Có thể sử dụng Giao dịch tự trị.

CREATE TABLE t1 (x INTEGER PRIMARY KEY);
CREATE TABLE t2 (x INTEGER);
CREATE TABLE t3 (x INTEGER);
CREATE TABLE t4 (x INTEGER REFERENCES t1(x));

Sau đó chạy PL / SQL ẩn danh này. Xem kỹ, thủ tục cục bộ upd_table_3 không chạy khi nó được khai báo. Nó chạy khi được gọi trong BEGIN chính khối:

DECLARE 
  PROCEDURE upd_table_3 IS
  PRAGMA AUTONOMOUS_TRANSACTION;
  BEGIN
    INSERT INTO t3 VALUES (3);
    COMMIT;
  END;
BEGIN
  INSERT INTO t1 VALUES (1);
  INSERT INTO t2 VALUES (2);
  upd_table_3;
  INSERT INTO t4 VALUES (4);
  COMMIT;
END;
/

Quy trình sẽ cố ý không thành công ở lần chèn thứ 4 với ORA-02291 . Tôi đã làm theo cách này. Sau đó

ROLLBACK;

Tất cả các bảng phải được khôi phục lại ngoại trừ t3 , mà chúng tôi đã chèn trong một giao dịch tự trị.

SELECT * FROM t1;

no rows selected

SELECT * FROM t2;

no rows selected

SELECT * FROM t3;

         X
----------
         3

SELECT * FROM t4;

no rows selected


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:Quyền truy cập chỉ đọc vào lược đồ cho người dùng khác?

  2. Tìm ra tên của thủ tục PL / SQL

  3. Các lựa chọn thay thế cho LIMIT và OFFSET để phân trang trong Oracle

  4. Hàm CURRENT_TIMESTAMP của Oracle có thực sự là một hàm không?

  5. Hàm ORDER BY không hoạt động trong Oracle