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

Làm thế nào để thực hiện đúng cách upert trong postgres 9.5

ON CONFLICT cấu trúc yêu cầu UNIQUE ràng buộc để làm việc. Từ tài liệu trên INSERT .. ON CONFLICT mệnh đề :

Bây giờ, câu hỏi không rõ ràng lắm nhưng bạn có thể cần một UNIQUE ràng buộc trên 2 cột được kết hợp:(category_id, gallery_id) .

ALTER TABLE category_gallery
    ADD CONSTRAINT category_gallery_uq
    UNIQUE (category_id, gallery_id) ;

Nếu hàng được chèn khớp với cả hai các giá trị với một hàng đã có trên bảng, sau đó thay vì INSERT , thực hiện UPDATE :

INSERT INTO category_gallery (
  category_id, gallery_id, create_date, create_by_user_id
  ) VALUES ($1, $2, $3, $4)
  ON CONFLICT (category_id, gallery_id)
  DO UPDATE SET
    last_modified_date = EXCLUDED.create_date,
    last_modified_by_user_id = EXCLUDED.create_by_user_id ;

Bạn có thể sử dụng các cột của ràng buộc DUY NHẤT:

  ON CONFLICT (category_id, gallery_id) 

hoặc tên ràng buộc:

  ON CONFLICT ON CONSTRAINT category_gallery_uq  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mã hóa (<columnName>, 'Escape') tương đương PostgreSQL trong java là gì?

  2. Giá trị 'CONTINUE' không phải là lỗi hợp lệ khi chạy liquibase

  3. Ecto xây dựng nhiều assoc

  4. Tại sao truy cập mảng PostgreSQL trong C nhanh hơn nhiều so với PL / pgSQL?

  5. PostgreSQL lặp lại các chức năng bên ngoài. Điều đó có thể không?