【问题标题】:Implement/use foreign keys in SQLite?在 SQLite 中实现/使用外键?
【发布时间】:2010-07-21 08:15:49
【问题描述】:

如何在 SQLite 中实现外键?我在想这样的事情:

CREATE TABLE job (_id INTEGER PRIMARY KEY AUTOINCREMENT, employer_id INTEGER, ...);
CREATE TABLE employer(_id INTEGER, employer_name TEXT NOT NULL, ...);

其中employer_id 是表employer 中的_id。这行得通吗?是否有另一种快速,可能不太容易出错的方式?也许有触发器?

【问题讨论】:

标签: sqlite foreign-keys


【解决方案1】:

也许我不明白这个问题,但如果这是你想要的约束,那就这样做吧:

ALTER TABLE Job
  ADD FOREIGN KEY (employer_id)
    REFERENCES Employer(_id)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION;

【讨论】:

  • 那是合法的 SQLite 代码吗?我以为 SQLite 不支持外键约束?
  • @Mohit Deshpande:至少 SQLite3 可以,我不知道早期版本。
  • @Mohit:我也很惊讶,但 SQLite 支持外键,请参阅 sqlite.org/foreignkeys.html
  • @Mohit:如果您使用的是 SQLite 3.6.19 或更高版本,则支持外键。有关详细信息以及如何启用它,请参阅hwaci.com/sw/sqlite/foreignkeys.html
  • @WillemvanRumpt:这真的有效吗?在 SQLite 3.7.7 上,它给出了语法错误;根据文档,它不应该工作。
【解决方案2】:

SQLite (3.6.19) Foreign Key Support

(早期版本的 SQLite 不支持强制外键关系。)

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多