我希望有人能向我解释 SQL 关键字 REFERENCES 的用途
CREATE TABLE wizards(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
, color TEXT);
CREATE TABLE powers(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name STRING,
damage INTEGER,
wizard_id INTEGER REFERENCES wizards(id)
);
我花了很多时间试图查找它,我最初认为它会限制您可以输入到 powers 表中的数据类型(基于 wizard_id 是否)但是,我仍然能够插入数据进入两列,没有我注意到的任何限制。
那么,REFERENCES这个关键字只是为了提高查询速度吗?它的真正目的是什么?
谢谢
最佳答案
它创建一个 Foreign Key到另一张 table 。这可以带来性能优势,但外键主要与数据完整性有关。这意味着(在您的情况下)powers
的 wizard_id
字段必须具有存在于 wizards 的
表。换句话说,权力必须指的是一个有效的巫师。许多数据库还使用此信息来传播删除或其他更改,因此表保持同步。id
字段中的值
刚刚注意到这一点。您能够绕过键约束的一个原因可能是未启用外键。参见 Enabling foreign keys在 SQLite3 文档中。
关于sql - SQLite3 中的 REFERENCES 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19186388/