SQLite:向现有表添加外键
查询数据库时,维护数据完整性至关重要。外键在加强表之间的关系、确保数据引用有效方面发挥着至关重要的作用。然而,在 SQLite 上下文中,修改现有表时存在某些限制。
挑战:向现有表添加外键
考虑以下场景:您有一个名为“child”的现有 SQLite 表,其架构如下:
CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT);
您的目标是建立一个“parent_id”列上的外键约束(假设已启用外键)。然而,传统方法可能不够。
解决方案:限制和解决方法
在 SQLite 中,无法直接使用“ALTER”向现有表添加外键表添加约束”语法。与其他数据库系统不同,SQLite 缺乏对这种特定 ALTER TABLE 变体的支持。
唯一可行的解决方案是在创建过程中修改表。您可以删除现有的“子”表,使用外键约束重新创建它,然后使用临时表中保存的数据重新填充它:
CREATE TABLE child ( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT, FOREIGN KEY (parent_id) REFERENCES parent(id) );
此过程可确保外键约束成功为“子”表建立。
以上是如何向现有 SQLite 表添加外键约束?的详细内容。更多信息请关注PHP中文网其他相关文章!