Я хочу обновить строку с помощью инструкции insert. В самом деле, я могу вставлять строки, но если уникальный атрибут уже существует, я бы хотел обновить содержимое.Обновить новое значение при конфликте
Так что я получил эти таблицы
CREATE TABLE dtest (
"id" text,
followers_count int4,
someuniq int4
);
CREATE UNIQUE INDEX dtest_idx ON dtest USING btree (someuniq);
CREATE TABLE temp_data (
tid text,
tfo int4,
tuniq int4);
Будет считать, что у меня есть вкладка Темпа, и я вставить данные/обновления из этой таблицы
INSERT INTO temp_data VALUES ('id1',4,1);
INSERT INTO temp_data VALUES ('id2',0,2);
INSERT INTO temp_data VALUES ('id3',40,3);
INSERT INTO dtest("id","followers_count","someuniq")
SELECT t.tid, t.tfo, t.tuniq
FROM temp_data t
ON CONFLICT DO NOTHING;
Вместо того чтобы делать вставку и затем обновление , Я хотел бы знать, можно ли обновить значения примерно так
INSERT INTO dtest("id","followers_count","someuniq")
SELECT tid, tfo, tuniq
FROM temp_data
ON CONFLICT ("someuniq")
DO UPDATE SET followers_count =
(SELECT tfo FROM temp_data where tid = EXCLUDED.tid)
WHERE EXCLUDED.id = tid;
Wic h означает «Обновить некоторые поля, если строка уже существует», что я делаю неправильно?