Problem med sammensatte primærnøgler der indgår i relationer
Hej EksperterHar følgende script:
DROP TABLE test1 CASCADE;
DROP TABLE test2;
create table test1 (
a varchar(25),
b varchar(25),
PRIMARY KEY (a,b)
);
create table test2 (
a varchar(25),
b varchar(25),
c varchar(25),
primary key (a, b, c),
foreign key (a) references test1(a) on update cascade,
foreign key (b) references test1(b) on update cascade
);
test1 har en sammensat primærnøgle, som test2 er relateret til. Med andre ord, der er en "en-til-mange" forbindelse fra test1 til test2. Denne situation er ganske normal i min verden men tilsyneladende ganske problematisk i postgreSQL.
Ovenstående resulterer i følgende fejl:
ERROR: there is no unique constraint matching given keys for referenced table "test1"
Min egen ressearch har ført til at fejlen umiddelbart kan fjernes ved brug af 'UNIQUE' i test1:
create table test1 (
a varchar(25) UNIQUE,
b varchar(25) UNIQUE,
PRIMARY KEY (a,b)
);
Dette er dog en meget dårlig og ubrugbar løsning, da det jo begrænser antallet af rækker i test1 ganske voldsomt. Lad os antage at kolonne 'a' i test1 er et bilmærke - ja så kan dette bilmærke jo kun fremkomme een gang, hvorved pointen med den sammensatte primærnøgle går fløjten.
Hvordan laver man så sammensætte primærnøgler i postgreSQL?