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 语句仅为当前会话启用该设置。控制台和编辑器在不同的会话中执行。
只需转到数据源设置的高级选项卡并在那里进行设置。它将应用于所有会话。
我正在使用 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 语句仅为当前会话启用该设置。控制台和编辑器在不同的会话中执行。
只需转到数据源设置的高级选项卡并在那里进行设置。它将应用于所有会话。