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

CHÈN và tuần tự hóa giao dịch trong PostreSQL

Nói chung, không. Giao dịch thứ hai chỉ là chèn, vì vậy trừ khi có kiểm tra chỉ mục duy nhất hoặc kích hoạt khác cần diễn ra, dữ liệu có thể được chèn vô điều kiện. Trong trường hợp chỉ mục duy nhất (bao gồm cả khóa chính), nó sẽ chặn nếu cả hai giao dịch đang cập nhật các hàng có cùng giá trị, ví dụ:

-- Session 1                           -- Session 2
CREATE TABLE t (x INT PRIMARY KEY);
BEGIN;
INSERT INTO t VALUES (1);
                                       BEGIN;
                                       INSERT INTO t VALUES (1);  -- blocks here
COMMIT;
                                       -- finally completes with duplicate key error

Mọi thứ ít rõ ràng hơn trong trường hợp cập nhật có thể ảnh hưởng đến việc chèn bởi giao dịch khác. Tôi hiểu PostgreSQL chưa hỗ trợ khả năng tuần tự "true" trong trường hợp này. Tôi không biết nó được các hệ thống SQL khác hỗ trợ phổ biến như thế nào.

Xem http://www.postgresql.org/docs/current/interactive/ mvcc.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một kết xuất cơ sở dữ liệu cho các bảng và mục nhập cụ thể Postgres

  2. Truy vấn SELECT đệ quy để trả về tỷ lệ có độ sâu tùy ý?

  3. Cảnh báo gây phiền nhiễu cho con rối và Postgres:Phiên bản chuyển sang máy chủ postgresql ::không được dùng nữa

  4. thứ tự cột trong câu lệnh SELECT * - được đảm bảo?

  5. Trong PostgreSQL, làm thế nào để chèn dữ liệu bằng lệnh COPY?