我在将具有两个约束条件的约束添加到现有表时遇到困难。我正在处理下面的两个关系,并且正在尝试将约束添加到“books”表中。
关系是:
括号中的键是主键,而斜体是外键。
第一个标准/条件是 subject_id 不为NULL,并且在将新的book-tuple插入书籍中时 subject_id 已作为主键存在于Subject关系中。
ALTER TABLE books ADD CONSTRAINT hasSubject
CHECK(subject_id IS NOT NULL AND subject_id REFERENCES subjects(subject_id))
我不断收到错误消息:“'REFERENCES'或附近的语法错误”
有任何想法吗?先感谢您!
最佳答案
REFERENCES
是约束的独立类型。因此,您需要两个约束:
ALTER TABLE books ADD CONSTRAINT chk_books_subject_id
CHECK (subject_id IS NOT NULL);
ALTER TABLE books ADD CONSTRAINT fk_books_subject_id
FOREIGN KEY (subject_id) REFERENCES subjects(subject_id);
我将它们放在两个
ALTER TABLE
语句中,以强调它们是不同的。它们可以合并为一个语句。编辑:
在一个声明中:
ALTER TABLE books
ADD CONSTRAINT chk_books_subject_id CHECK (subject_id IS NOT NULL),
ADD CONSTRAINT fk_books_subject_id FOREIGN KEY (subject_id) REFERENCES subjects(subject_id);
关于sql - PostgreSQL : Add constraint with mulitple conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058465/