私はPostgreSQLのテーブルがある場合:PostgreSQLで1アウトオブ2 NOT NULL制約を追加する
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)
);
は、私はどちらかschoolName
またはstudiedAt
ニーズがnullでないためになるように制約を加える必要があります(そのうちの1人は情報を持っていなければなりません)。
どうすればよいですか?
このチェックは、schoolNameとstudiesAtの両方が設定されていることを防ぎません。私はOPも考えていたと思います。 – pithyless
質問は、少なくとも「schoolName」と「learnedAt」には何らかの情報が含まれていることを強制する不変式を求めます。私はあなたのコメントに従う制約の変形を追加しましたが、私は質問の解釈に同意しません。 –
これは少し遅いですが、これはXOR制約なので、 'CHECK((schoolName IS NULL)<>(learnedAt IS NULL))'と表現することができます) ' – norcalli