如何插入到冲突排除工作?



我找不到任何关于这方面的足够好的文档,所以我只是想问问Stackoverflow的公民。

假设我有以下SQL查询:

INSERT INTO PUBLIC.TABLE_A (id, user, active, last_login) --The ID column is the primary key
SELECT
b.id, b.user, b.active, b.last_login
FROM
PUBLIC.TABLE_B as B
ON CONFLICT ON CONSTRAINT ID_PKEY 
DO UPDATE
user = excluded.user,
active = excluded.active,
last_login = excluded.last_login

问题1)user, active, and last_login come from PUBLIC.TABLE_A,对吗?

问题2)excluded.user, excluded.active, excluded.last_login来自PUBLIC.TABLE_B的准确记录是正确的吗?

您的语法不正确,应该是ON CONFLICT ... DO UPDATESET"user" = EXCLUDED."user"

SET指向答案的方向,因为它就像UPDATE语句中的SET。是的,=左边的列(不能用表名限定)是要更新的表的列,在您的例子中是public.table_a

伪表EXCLUDED指定您最初试图插入的行,但由于冲突而被拒绝。在您的例子中,这是public.table_b中的一行。

最新更新