sql >> Databáze >  >> RDS >> PostgreSQL

Jedinečné omezení pro více tabulek

Můžete zkusit následující. Musíte vytvořit redundantní UNIQUE omezení na (id, aId) v Parent (SQL je docela hloupé, že?!).

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

Mnohem lepším řešením by možná bylo úplně vypustit parentId z tabulky Child, přidat bId místo toho a odkazujte na nadřazenou tabulku založenou na (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);

Existuje nějaký důvod, proč to nemůžete udělat?



  1. Barkerův zápis

  2. Jak pg_dump RDS Postgres databázi?

  3. Jak zakázat všechna omezení cizího klíče v databázi SQL Server - SQL Server / TSQL výukový program, část 77

  4. jak vypočítat podobnost mezi dvěma řetězci v MYSQL