如何在 DB Browser for SQLite (GUI) 中插入多个外键
how to insert multiple foreign key in DB Browser for SQLite (GUI)
我正在使用 SQLite 和用于 SQLite 的数据库浏览器。我知道如果要使用 GUI 插入外键,只需向右滚动并双击即可将外键插入到相应的字段中。问题是当你想使用多个外键时。我应该如何或在哪里使用 GUI 放置多个外键约束?
我的实际 sql 是(returns 一个例外 'foreign key mismatch - "diseases" referencing "beehives"...'):
CREATE TABLE "diseases" (
"id" INTEGER NOT NULL,
"id_beehive" INTEGER NOT NULL,
"id_apiary" INTEGER NOT NULL,
"disease" TEXT NOT NULL,
"treatment" TEXT NOT NULL,
"start_treat_date" DATE NOT NULL,
"end_treat_date" DATE,
PRIMARY KEY("id"),
FOREIGN KEY("id_beehive") REFERENCES "beehives"("number") ON UPDATE CASCADE,
FOREIGN KEY("id_apiary") REFERENCES "beehives"("id_apiary") ON UPDATE CASCADE
);
我想使用 gui 做的是:
CREATE TABLE "diseases" (
"id" INTEGER NOT NULL,
"id_beehive" INTEGER NOT NULL,
"id_apiary" INTEGER NOT NULL,
"disease" TEXT NOT NULL,
"treatment" TEXT NOT NULL,
"start_treat_date" DATE NOT NULL,
"end_treat_date" DATE,
PRIMARY KEY("id"),
FOREIGN KEY("id_beehive","id_apiary") REFERENCES "beehives"("number","id_apiary") ON UPDATE CASCADE
);
蜂箱sql:
CREATE TABLE "beehives" (
"number" INTEGER NOT NULL,
"id_apiary" INTEGER NOT NULL DEFAULT -2,
"date" DATE,
"type" TEXT,
"favorite" BOOLEAN DEFAULT 'false',
PRIMARY KEY("number","id_apiary"),
FOREIGN KEY("id_apiary") REFERENCES "apiaries"("id") ON DELETE SET NULL
);
经研究,暂时不能。
每次修改 table 的结构时,DB Browser for SQLite 在后台所做的就是重命名 table,使用更新后的结构创建新的 table,移动将数据添加到这个新的 table 并删除旧的 table。所以在 GUI 中它看起来像是唯一的更新。
不幸的是,要创建复合外键或将简单 FK 修改为复合 FK,您只能从 SQL window.
手动执行
示例:
FOREIGN KEY("id_beehive","id_apiary") REFERENCES "beehives"("number","id_apiary") ON
UPDATE CASCADE
我正在使用 SQLite 和用于 SQLite 的数据库浏览器。我知道如果要使用 GUI 插入外键,只需向右滚动并双击即可将外键插入到相应的字段中。问题是当你想使用多个外键时。我应该如何或在哪里使用 GUI 放置多个外键约束? 我的实际 sql 是(returns 一个例外 'foreign key mismatch - "diseases" referencing "beehives"...'):
CREATE TABLE "diseases" (
"id" INTEGER NOT NULL,
"id_beehive" INTEGER NOT NULL,
"id_apiary" INTEGER NOT NULL,
"disease" TEXT NOT NULL,
"treatment" TEXT NOT NULL,
"start_treat_date" DATE NOT NULL,
"end_treat_date" DATE,
PRIMARY KEY("id"),
FOREIGN KEY("id_beehive") REFERENCES "beehives"("number") ON UPDATE CASCADE,
FOREIGN KEY("id_apiary") REFERENCES "beehives"("id_apiary") ON UPDATE CASCADE
);
我想使用 gui 做的是:
CREATE TABLE "diseases" (
"id" INTEGER NOT NULL,
"id_beehive" INTEGER NOT NULL,
"id_apiary" INTEGER NOT NULL,
"disease" TEXT NOT NULL,
"treatment" TEXT NOT NULL,
"start_treat_date" DATE NOT NULL,
"end_treat_date" DATE,
PRIMARY KEY("id"),
FOREIGN KEY("id_beehive","id_apiary") REFERENCES "beehives"("number","id_apiary") ON UPDATE CASCADE
);
蜂箱sql:
CREATE TABLE "beehives" (
"number" INTEGER NOT NULL,
"id_apiary" INTEGER NOT NULL DEFAULT -2,
"date" DATE,
"type" TEXT,
"favorite" BOOLEAN DEFAULT 'false',
PRIMARY KEY("number","id_apiary"),
FOREIGN KEY("id_apiary") REFERENCES "apiaries"("id") ON DELETE SET NULL
);
经研究,暂时不能。 每次修改 table 的结构时,DB Browser for SQLite 在后台所做的就是重命名 table,使用更新后的结构创建新的 table,移动将数据添加到这个新的 table 并删除旧的 table。所以在 GUI 中它看起来像是唯一的更新。 不幸的是,要创建复合外键或将简单 FK 修改为复合 FK,您只能从 SQL window.
手动执行示例:
FOREIGN KEY("id_beehive","id_apiary") REFERENCES "beehives"("number","id_apiary") ON
UPDATE CASCADE