У меня есть следующие таблицы:
CREATE TABLE "Abilities" (
"ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
"Name" TEXT NOT NULL,
"Description" TEXT NOT NULL
)
и
CREATE TABLE "Creatures" (
"ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
"Faction" TEXT,
"Name" TEXT NOT NULL UNIQUE,
"Tier" INTEGER NOT NULL DEFAULT 1,
"Upgrade" INTEGER NOT NULL DEFAULT 0,
"GoldCost" INTEGER NOT NULL DEFAULT 0,
"PopulationWeekly" INTEGER NOT NULL DEFAULT 0,
"Attack" INTEGER NOT NULL DEFAULT 0,
"Defense" INTEGER NOT NULL DEFAULT 0,
"DamageMin" INTEGER NOT NULL DEFAULT 0,
"DamageMax" INTEGER NOT NULL DEFAULT 0,
"Initiative" INTEGER NOT NULL DEFAULT 0,
"Speed" INTEGER NOT NULL DEFAULT 0,
"Health" INTEGER NOT NULL DEFAULT 0,
"Mana" INTEGER NOT NULL DEFAULT 0,
"Shots" INTEGER NOT NULL DEFAULT 0,
"Experience" INTEGER NOT NULL DEFAULT 0,
"PowerRating" INTEGER NOT NULL DEFAULT 0,
"Abilities" TEXT,
FOREIGN KEY("Abilities") REFERENCES "Abilities"("Name")
)
При попытке сделать следующую вставку:
INSERT INTO "main"."Creatures"
("Faction", "Name", "Abilities")
VALUES ('Academy', 'Gremlin', null);
Я получаю:
Result: foreign key mismatch - "Creatures" referencing "Abilities"
At line 1:
INSERT INTO "main"."Creatures"
("Faction", "Name", "Abilities")
VALUES ('Academy', 'Gremlin', null);
ошибка. Но я думал, что все будет в порядке, если я попытаюсь вставить «ноль» во внешний ключ? В этом случае я хочу иметь возможность вставлять пустые значения для некоторых значений «Ability», поскольку не все записи должны иметь значение «Ability».
Как мне сделать так, чтобы при вставке чего-либо в «Существа "SQL проверит, если" Способность "НЕ НЕДЕЙСТВИТЕЛЬНА, то запись должна существовать в столбце" Имя "таблицы" Способности ".