PostgreSQL v10 получил ошибку при использовании вставки .. при конфликте .. обновление на многораздельной таблице - PullRequest
0 голосов
/ 20 февраля 2020

В моей базе данных есть следующая таблица, таблица была создана с использованием django и architect.

CREATE TABLE public.results
(
    results_id integer NOT NULL DEFAULT nextval('results_results_id_seq'::regclass),
    name character varying(45) COLLATE pg_catalog."default" NOT NULL,
    value double precision NOT NULL,
    scenario_id integer NOT NULL,
    CONSTRAINT results_pkey PRIMARY KEY (results_id),
    CONSTRAINT results_scenario_id_name_22ad9c45_uniq UNIQUE (scenario_id, name),
    CONSTRAINT results_scenario_id_d800e53c_fk_scenario_scenario_id FOREIGN KEY (scenario_id)
        REFERENCES public.scenario (scenario_id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
        DEFERRABLE INITIALLY DEFERRED
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

Проблема, с которой я сталкиваюсь, возникает при выполнении следующего запроса

insert into 
        results ("scenario_id","name","value")
    values
        (44,'footprint_km2',1000)
    on conflict 
        ("scenario_id","name")
    do update set
        "value"= excluded.value;
duplicate key value violates unique constraint "results_1_500000_scenario_id_name_key"
DETAIL:  Key (scenario_id, name)=(44, footprint_km2) already exists

, что не имеет смысла для меня, потому что я указал действие обновления при возникновении конфликта. ¿Ты знаешь, что я делаю неправильно?

...