PostgreSQL:添加使用Mulitple条件的约束



我遇到困难,在已经存在的表中添加了两个约束条件的约束。我正在与下面的两个关系合作,并且正在尝试将约束添加到"书籍"表中。

关系是:

  1. books ((book_id),title, furety_id objective_id

  2. 主题((主题),主题,位置)

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);

最新更新