им с этой ошибкой:PostgreSQL ошибка ограничения
ERROR: there is no unique constraint matching given keys for referenced table "vulling"
Это мой код, чтобы сделать внешний ключ:
ALTER TABLE put_25_vlak_1_spoor
ADD FOREIGN KEY (spoor,vulling)
REFERENCES vulling(spoor,vulling);
таблицы сделаны таким образом:
CREATE TABLE put_25_vlak_1_spoor
(
id serial NOT NULL,
geometry_spoor geometry(MultiPolygon,28992),
spoor integer NOT NULL,
put integer,
vlak integer,
vulling integer NOT NULL,
CONSTRAINT put_25_vlak_1_spoor_pkey PRIMARY KEY (spoor, vulling)
)
CREATE TABLE vulling
(
vlak smallint,
textuur character varying(8),
vulling integer NOT NULL,
spoor integer NOT NULL,
put integer NOT NULL,
CONSTRAINT vulling_pkey PRIMARY KEY (vulling, put, spoor)
)
I прочитайте эти потоки в stackoverflow, но я не совсем понимаю, что они говорят:
PostgreSQL constraint problems
What is causing ERROR: there is no unique constraint matching given keys for referenced table?
Я надеюсь, что кто-то может помочь мне. Im очень новый для postgres и не совсем понимаю, как работают внешние ключи.
Приветствие
я также, хотя это и я поиск с этим SQL: выберите Spoor, vulling из vulling группы по Spoor, vulling , имеющему COUNT (*)> 1 и выберите след, vulling из put_25_vlak_1_spoor группы по Spoor, vulling , имеющий подсчета (*)> 1 , но не было двойных записей. У меня есть несколько двойных, если я только обманываю. Может быть, проблема? – waywer
Речь идет не только о непубликации, а о том, чтобы ** ** не допускать ** дублирования. Вы понимаете это, определяя уникальное ограничение для пары каланов. –
Я сделал оба столбца первичными ключами. Таким образом, нет дублирования (по крайней мере, я так и думал). Если я сделаю его уникальным в столбце, я не могу сделать что-то вроде этого: spoor = 10 vulling = 1 и spoor = 10 и vulling = 2.Но я хочу сделать это в своей базе данных – waywer