sql >> Database >  >> RDS >> PostgreSQL

Unieke beperking voor meerdere tabellen

Je zou het volgende kunnen proberen. U moet een redundante UNIEKE beperking maken op (id, aId) in Parent (SQL is nogal dom, nietwaar?!).

CREATE TABLE Child
(parentId INTEGER NOT NULL,
 aId INTEGER NOT NULL UNIQUE,
FOREIGN KEY (parentId,aId) REFERENCES Parent (id,aId),
createdOn TIMESTAMP NOT NULL);

Een mogelijk veel betere oplossing zou zijn om parentId helemaal uit de Child-tabel te verwijderen, voeg bId toe in plaats daarvan en gewoon verwijzen naar de bovenliggende tabel op basis van (aId, bId) :

CREATE TABLE Child
(aId INTEGER NOT NULL UNIQUE,
 bId INTEGER NOT NULL,
FOREIGN KEY (aId,bId) REFERENCES Parent (aId,bId),
createdOn TIMESTAMP NOT NULL);

Is er een reden waarom je dat niet kunt doen?



  1. Qt-toepassing crasht bij gebruik van ODBC-stuurprogramma (macOS)

  2. SQLiteLog:(1) nabij Produse:syntaxisfout

  3. Veroorzaakt door:java.time.DateTimeException:Conflict gevonden:veld DayOfWeek 6 verschilt van DayOfWeek 2 afgeleid van 30-01-2016

  4. Hoe doe je een tweede PDO mysql-query in een while-lus van een andere query?