在DB Browser for SQLite中添加外键失败,报FOREIGN语法错误求助
解决SQLite中ALTER TABLE添加外键报错的问题
问题原因
SQLite的ALTER TABLE语法存在局限性,不支持直接用ADD FOREIGN KEY给已存在的列添加外键约束,这就是你触发syntax error near "FOREIGN"的核心原因——哪怕已经通过Pragma启用外键功能也无法绕过这个限制。
解决方案:通过重建表添加外键
既然无法直接修改现有表添加外键,只能通过重建表的方式实现,具体步骤如下:
备份原表数据
创建临时表保存employee表的所有数据:CREATE TABLE temp_employee AS SELECT * FROM employee;删除原表
DROP TABLE employee;重新创建带外键约束的表
将branch_id的外键约束直接写入表创建语句:CREATE TABLE employee ( emp_id INT PRIMARY KEY, branch_id INT, FOREIGN KEY(branch_id) REFERENCES branch(branch_id) ON DELETE SET NULL );恢复数据
把临时表的数据导回新创建的employee表:INSERT INTO employee SELECT * FROM temp_employee;清理临时表(可选)
确认数据恢复无误后,可删除临时表:DROP TABLE temp_employee;
内容的提问来源于stack exchange,提问作者Seppi
相关产品推荐
相关产品推荐

