我正在研究最初使用复合外键/主键设计的 SQLite 数据库模式,我正在尝试将其更改为使用代理键。为代理键创建一个新列很容易,但现在我需要将代理键链接回父表 - 最好的方法是什么?
旧架构摘录:
CREATE TABLE "parent" (
"caseid" TEXT NOT NULL,
"issueid" INTEGER NOT NULL,
"data" TEXT,
PRIMARY KEY("caseid", "issueid")
)
CREATE TABLE "child" (
"caseid" TEXT NOT NULL,
"issueid" INTEGER NOT NULL,
"childdata" TEXT,
FOREIGN KEY("caseid", "issueid") REFERENCES parent("caseid", "issueid")
)
新架构摘录:
CREATE TABLE "parent" (
"id" INTEGER PRIMARY KEY,
"caseid" TEXT NOT NULL,
"issueid" INTEGER NOT NULL,
"data" TEXT
)
CREATE TABLE "child" (
"id" INTEGER PRIMARY KEY,
"childdata" TEXT,
"parent_id" INTEGER REFERENCES parent("id")
)
我的问题是,在用原始子表中的数据填充新子表后,如何填充“parent_id”字段,该字段现在是代理键而不是复合外键?有没有一种简单的方法可以作为 SQL 命令执行此操作?