Restricción única sobre varias tablas
Digamos que tenemos estas tablas:
CREATE TABLE A (
id SERIAL NOT NULL PRIMARY KEY
);
CREATE TABLE B (
id SERIAL NOT NULL PRIMARY KEY
);
CREATE TABLE Parent (
id SERIAL NOT NULL PRIMARY KEY,
aId INTEGER NOT NULL REFERENCES A (id),
bId INTEGER NOT NULL REFERENCES B (id),
UNIQUE(aId, bId)
);
CREATE TABLE Child (
parentId INTEGER NOT NULL REFERENCES Parent (id),
createdOn TIMESTAMP NOT NULL
);
¿Es posible crear una restricción única enChild
tal que para todas las filas enChild
como máximo una referencia aParent
teniendo algún valor deaId
? Dicho de otra manera, ¿puedo crear una restricción única para que la combinación de las tablas anteriores no tenga duplicadosaId
? Estoy pensando que no, las gramáticas de cada base de datos que puedo encontrar parecen vinculadas a una tabla por restricción, pero eso podría ser una falta de imaginación por mi parte. (Desnormalizando para incluiraId
enChild
es una solución, por supuesto.)