dataGrip 激活外键约束报错

Activate foreign key constraints error in dataGrip

我正在使用 DataGrip 和 sqlite。 我有一个 table suppliers 和另一个名为 products :

CREATE TABLE Suppliers (id INTEGER NOT NULL PRIMARY KEY,
nom TEXT,
siege_social TEXT);

CREATE TABLE Products (id INTEGER NOT NULL PRIMARY KEY,
nom TEXT,
prix REAL,
supplier INTEGER,
FOREIGN KEY (supplier) REFERENCES Suppliers(id)
);

我试过PRAGMA foreign_keys = ON;像我老师那样激活外键约束。 但是,当我在供应商 table 为空的情况下尝试插入产品时,我没有收到任何错误消息:

INSERT INTO Products values (1, "Lunettes Cobra", 30, 1);

我预料到了:FOREIGN KEY constraint failed

你知道我如何让它为此引发错误吗?

谢谢!

@forpas 要求提供整个代码,所以我删除了所有现有的 table 并使用了此代码:

PRAGMA foreign_keys = ON;

CREATE TABLE Suppliers (id INTEGER NOT NULL PRIMARY KEY,
nom TEXT,
siege_social TEXT);

CREATE TABLE Products (id INTEGER NOT NULL PRIMARY KEY,
nom TEXT,
prix REAL,
supplier INTEGER,
FOREIGN KEY (supplier) REFERENCES Suppliers(id)
);
INSERT INTO Products values (2, "Lunettes Cobra", 30, 1);

一切都按预期进行。

[2021-05-23 12:02:26] [19] [SQLITE_CONSTRAINT_FOREIGNKEY]  A foreign key constraint failed (FOREIGN KEY constraint failed)

@forpas 又说对了,我在激活 foreign_keys 之前创建了 table 并不是问题所在。我使用了 2 个控制台,一个用于创建 table,另一个用于插入值。我只在第一个中激活了 foreign_keys。我以为它是在数据库中激活的,但它与控制台相关。

执行 pragma 语句仅为当前会话启用该设置。控制台和编辑器在不同的会话中执行。

只需转到数据源设置的高级选项卡并在那里进行设置。它将应用于所有会话。