
Zitat von
strippenzieher
Ich hoffe ich befinde mich in der richtigen Rubrik...
Ich habe eine Tabelle die als Fremdschlüssel eindeutige IDs aus einer einer anderen Tabelle übernimmt. Zu jedem Fremdschlüssel gibt es mehrere Einträge - jedoch darf es nur einen 'Haupteintrag' zu jedem Fremdschlüssel geben.
Code:
ID | Eintrag
-----------------
1 | a
1 | b
1 | C
1 | d
2 | A
2 | b
2 | c
3 | A
Der großgeschriebene Eintrag soll den 'Haupteintrag' darstellen.
Ist es hier am sinnvollsten eine weitere Spalte vom Typ 'binary' hinzuzufügen und den Haupteintrag auf true zu setzen und mit einer RULE sicherzustellen, dass es pro ID immer nur einen Eintrag mit true gibt? Oder gibt es da bessere Alternativen?
Danke für Hinweise!
Code:
test=# create table s (id int, eintrag char);
CREATE TABLE
Time: 0,828 ms
test=*# create unique index idx_s on s(id) where eintrag=upper(eintrag);
CREATE INDEX
Time: 2,945 ms
test=*# insert into s values (1,'a');
INSERT 0 1
Time: 0,385 ms
test=*# insert into s values (1,'b');
INSERT 0 1
Time: 0,216 ms
test=*# insert into s values (1,'C');
INSERT 0 1
Time: 0,379 ms
test=*# insert into s values (1,'D');
ERROR: duplicate key value violates unique constraint "idx_s"
DETAIL: Key (id)=(1) already exists.
Hab ich Dich richtig verstanden?
Andreas
Lesezeichen