im ayant cette erreur:PostgreSQL erreur de contrainte
ERROR: there is no unique constraint matching given keys for referenced table "vulling"
Ceci est mon code pour faire une clé étrangère:
ALTER TABLE put_25_vlak_1_spoor
ADD FOREIGN KEY (spoor,vulling)
REFERENCES vulling(spoor,vulling);
Les tables sont faites de cette façon:
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 lire ce fil sur stackoverflow mais je ne comprends pas tout à fait ce qu'ils disent:
PostgreSQL constraint problems
What is causing ERROR: there is no unique constraint matching given keys for referenced table?
J'espère que quelqu'un peut me aider. Im très nouveau à postgres et ne comprends pas complètement comment les clefs étrangères fonctionnent.
Vive
i aussi bien que je recherche avec cette sql: select Spoor, vulling de vulling groupe par Spoor, vulling comte ayant (*)> 1 et select Spoor, vulling de put_25_vlak_1_spoor groupe par Spoor, vulling comte ayant (*)> 1 mais il n'y avait pas de double enregistrement. J'ai un peu de double si je ne fais que le spoor. Peut-être que c'est le problème? – waywer
Il ne s'agit pas seulement de non-dublication, il s'agit de ne jamais permettre la dublication. Vous obtenez cela en définissant une contrainte unique pour une paire de calums. –
J'ai fait des deux colonnes une clé primaire. De cette façon, il n'y a pas de dublication (du moins je le pensais). Si je le rend unique la colonne, je ne peux pas faire quelque chose comme ceci: Spoor = 10 vulling = 1 et Spoor = 10 et vulling = 2.Mais je veux le faire dans ma base de données – waywer