PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Restrição exclusiva em várias tabelas


Você pode tentar o seguinte. Você precisa criar uma restrição UNIQUE redundante em (id, aId) em Parent (SQL é bem burro não é?!).
CREATE TABLE Child
(parentId INTEGER NOT NULL,
 aId INTEGER NOT NULL UNIQUE,
FOREIGN KEY (parentId,aId) REFERENCES Parent (id,aId),
createdOn TIMESTAMP NOT NULL);

Possivelmente, uma solução muito melhor seria descartar parentId da tabela Child, adicionar bId em vez disso, apenas faça referência à tabela Pai com base em (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);

Existe alguma razão pela qual você não pode fazer isso?