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

Các quy tắc của PostgreSQL và vấn đề nextval () / serial (rất đặc trưng cho PostgreSQL)

Từ tài liệu http://www.postgresql.org/docs/8.4/ static / rules.html

vì vậy, trước tiên nó sẽ viết lại các truy vấn mà không thực hiện bất cứ điều gì.

bạn có thể làm cho nó hoạt động khi bạn không chèn nhiều bản ghi cùng một lúc:

create or replace rule ct_i_children1 as
  on insert to Children1
  do instead (
    insert into Parents(id, attribute1, type)
      values(nextval('parents_id_seq'), new.attribute1, 'Child1');
    insert into Partial_Children1(id, attribute2, type)
      values(currval('parents_id_seq'), new.attribute2, 'Child1');
  );

Sau đó, bạn có thể làm:

insert into Children1 (attribute1, attribute2) values ('a1', 'a2');
insert into Children1 (attribute1, attribute2) values ('b1', 'b2');

nhưng không

insert into Children1 (attribute1, attribute2)
  values ('a1', 'a2'),
         ('b1', 'b2');

Vì vậy, bạn thực sự không nên sử dụng hệ thống quy tắc với các lệnh gọi currval () phức tạp.

Ngoài ra, hãy xem các nhận xét trên các trang này:

Một mẹo khác:hỗ trợ tại danh sách gửi thư postgresql cũng tuyệt vời như chính công cụ cơ sở dữ liệu!

Nhân tiện:bạn có biết rằng postgresql có hỗ trợ tính năng kế thừa không?

Tóm tắt:bạn nên sử dụng trình kích hoạt hoặc tránh chèn nhiều hàng!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chuyển CŨ, MỚI và số nhận dạng để THỰC HIỆN trong một hàm kích hoạt?

  2. Cách thêm bộ chứa docker vào mạng docker hiện có

  3. Làm cách nào để có được sự khác biệt giữa hai trường datetime theo ngày và giờ trong chế độ xem postgresql?

  4. Openshift và net-ssh không tương thích? (2.9.3-beta1 so với 2.9.2)

  5. Trả lại danh sách các múi giờ được hỗ trợ bởi PostgreSQL