Я использую pgsql upsert запрос на конфликт, основанный на комбинации из трех столбцов.Здесь один столбец может быть нулевым или нет, а два других столбца всегда будут содержать значение.Запрос Upsert работает (обновляет значения), когда все три столбца имеют значения, если другой столбец, который может иметь значение NULL, не имеет значений, поэтому он вставляет запись вместо обновления.
CREATE TABLE "public"."plan_line_items" (
"plan_id" int4 NOT NULL
"module_id" int4 NOT NULL,
"sub_module_id" int4,
"created_date" timestamptz(6) NOT NULL DEFAULT now(),
"modified_date" timestamptz(6) NOT NULL DEFAULT now(),
"created_by" int4 NOT NULL,
"modified_by" int4 NOT NULL,
"is_active" bool NOT NULL DEFAULT true,
);
INSERT INTO plan_line_items1 ( plan_id,module_id, sub_module_id, created_by, modified_by, modified_date )
VALUES ( '1', '1', '1', '36', '36', 'now()' ),
( '1', '2', null, '36', '36', 'now()' ) ON CONFLICT (
plan_id,module_id,sub_module_id ) DO UPDATE SET modified_by = EXCLUDED.modified_by,
modified_date = EXCLUDED.modified_date
Когда я попробовал этот запрос в первый разего вставка записи.после этого, когда я попробовал второй раз, он обновляет только ту запись, которая имеет все plan_id, module_id, sub_module_id с 1. не обновляет ту запись, которая уже вставлена с третьим нулевым значением ('1', '2', null, '36 ',' 36 ',' now () ').Я перепробовал много вещей, но не нашел способа сделать это.Я хочу обновить эту запись при выполнении этого запроса во второй раз вместо вставки.Если у кого-нибудь есть решение, пожалуйста, помогите.