【问题标题】:How would I define a foreign key that points to the same table我将如何定义指向同一个表的外键
【发布时间】:2014-09-14 00:33:56
【问题描述】:

这可能只是糟糕的设计。我的目标是拥有一个包含指向同一个表的外键的表。我举过的例子是,如果您要存储书籍,并且想要跟踪特定系列的续集。您的表格可能如下所示:

书籍

|id|         title|sequel|
|--|--------------|------|
| 1|Harry Potter 1|     3|
| 2|Great Gatsby  |  null|
| 3|Harry Potter 2|  null|
|------------------------|

我希望 sequel 列绑定到同一个表中的 id。最好,您将其限制为同一张表中的不同 id。我可以简单地将此列定义为指向 Books 表的外键吗?

【问题讨论】:

标签: relational-database


【解决方案1】:

是的,你绝对可以:

-- Add the foreign key
ALTER TABLE books ADD CONSTRAINT books_fk 
FOREIGN KEY (sequel) REFERENCES books (id);

-- Make sure it's different than the id
ALTER TABLE books ADD CONSTRAINT book_id_sequel_chk
CHECK (id <> sequel);

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 2017-01-09
    • 2010-10-15
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多