我遇到困难,在已经存在的表中添加了两个约束条件的约束。我正在与下面的两个关系合作,并且正在尝试将约束添加到"书籍"表中。
关系是:
-
books ((book_id),title, furety_id , objective_id )
-
主题((主题),主题,位置)
parantheses中的键是主要键,而斜体是外键。
第一个条件/条件是 objection_id 不是零,而 objects_id 在将新的书籍插入到书籍中时,就必须作为一个已经存在作为一个主题关系中的主要键。
ALTER TABLE books ADD CONSTRAINT hasSubject
CHECK(subject_id IS NOT NULL AND subject_id REFERENCES subjects(subject_id))
我不断收到错误消息:"语法错误或附近'参考'"
有什么想法吗?先感谢您!
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);