psycopg2.NotSupportedError: INSERT с предложением ON CONFLICT нельзя использовать с таблицей, в которой есть правила INSERT или UPDATE - PullRequest
0 голосов
/ 25 марта 2019

Когда я создаю ПРАВИЛО обновления рядом с предложением CONFLICT, возникает ошибка.

Здесь мой код конфликта

 insert_query = "INSERT INTO my_company (id, name, login, logout) VALUES %s\
                    ON CONFLICT (id) DO NOTHING"

мое обновление RULE

CREATE RULE log_shoelace AS ON UPDATE TO my_company
    WHERE NEW.login <> OLD.login or NEW.logout <> OLD.logout
    DO INSERT INTO my_company VALUES (
    new.id, new.name, new.login, new.logout, new.interval_time, current_date);

Поле таблицы my_company содержит идентификатор, имя, логин.logout, interval_time, today.

если какие-либо данные обновляются, вставьте эти данные в ту же таблицу.Но здесь я не могу использовать CONFLICT и RULE одновременно.Так что в этом случае, что я могу сделать?

Спасибо.

Создание таблицы и создание последовательности для тестирования:

CREATE SEQUENCE IF NOT EXISTS my_company_id_seq;

CREATE TABLE public.my_company
( id            integer NOT NULL DEFAULT nextval('my_company_id_seq'::regclass)
, name          character varying(50)
, login         time without time zone
, logout        time without time zone
, interval_time time without time zone
, today         date DEFAULT CURRENT_DATE
, CONSTRAINT my_company_pkey PRIMARY KEY (id) 
);
...