sql >> Databasteknik >  >> RDS >> PostgreSQL

Unik begränsning över flera tabeller

Du kan prova följande. Du måste skapa en redundant UNIK begränsning på (id, aId) i Parent (SQL är väl ganska dumt?!).

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

En mycket bättre lösning skulle möjligen vara att helt ta bort parentId från Child-tabellen, lägg till bId istället och bara hänvisa till den överordnade tabellen baserat på (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);

Finns det någon anledning till att du inte kan göra det?



  1. Django-formulär/databasfel:värde för långt för att typtecken varierar (4)

  2. Hur man får rad-id i mysql

  3. ORACLE 12.2.01 välja kolumner från olika tabeller med liknande namn --> intern kolumnidentifierare används

  4. Jag kan inte generera Hibernate-mappningsfiler och POJO från databasen PostgreSQL?