Si tengo una tabla en PostgreSQL:Adición de una restricción no nula con un out-of-dos en PostgreSQL
create table Education (
id integer references Profiles(id),
finished YearValue not null,
started YearValue,
qualification text,
schoolName text,
studiedAt integer references Organizations(id),
primary key (id)
);
Necesito hacer una restricción para que sea schoolName
o studiedAt
necesidades a no ser nulo (uno de ellos debe tener información en él).
¿Cómo puedo hacer esto?
Este control no protege contra schoolName y studyAt set, que creo que el OP también tenía en mente. – pithyless
La pregunta requiere un invariante que fuerce al menos una de 'schoolName' y' studiedAt' contiene alguna información. Agregué una variante de la restricción que cumple con su comentario, aunque no estoy de acuerdo con la interpretación de la pregunta. –
Es un poco tarde, pero esta es una restricción XOR por lo que puede expresarlo como 'CHECK ((schoolName IS NULL) <> (estudió EN IS NULL))' – norcalli