挑战:
您正在使用现有 SQLite 表,并且您需要在特定的上添加外键约束
解决方案:
与其他 SQL 实现不同,SQLite 不支持 ALTER TABLE 命令的 ADD CONSTRAINT 变体。因此,无法直接向现有表添加外键约束。
替代方法:
要获得所需的结果,您必须按照以下步骤操作:
此过程的示例 SQL:
-- Step 1: Create a temporary table CREATE TEMPORARY TABLE t_child AS SELECT * FROM child; -- Step 2: Drop the existing table DROP TABLE child; -- Step 3: Recreate the table with the foreign key constraint CREATE TABLE child ( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT, FOREIGN KEY (parent_id) REFERENCES parent(id) ); -- Step 4: Insert data back from the temporary table INSERT INTO child SELECT * FROM t_child;
通过执行这些步骤,您实质上是创建一个具有所需外键约束的新表,同时保留原始表中的数据。
以上是如何向现有 SQLite 表添加外键?的详细内容。更多信息请关注PHP中文网其他相关文章!