Postgres chưa triển khai tương đương với INSERT OR REPLACE
. Từ ON CONFLICT
tài liệu (tôi nhấn mạnh):
Nó có thể là KHÔNG GÌ hoặc mệnh đề DO CẬP NHẬT xác định chi tiết chính xác của hành động CẬP NHẬT sẽ được thực hiện trong trường hợp có xung đột.
Mặc dù nó không cung cấp cho bạn cách viết tắt để thay thế, ON CONFLICT DO UPDATE
áp dụng chung hơn, vì nó cho phép bạn đặt các giá trị mới dựa trên dữ liệu đã có từ trước. Ví dụ:
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;