我正在使用DataGrip和sqlite。我有一个表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;来激活外键约束,就像我的老师做的那样。但是,当我在供应商表为空的情况下尝试插入产品时,我没有得到任何错误:
INSERT INTO Products values (1, "Lunettes Cobra", 30, 1);

我预计是这样的:FOREIGN KEY constraint failed
你知道我怎么才能让它为此产生一个错误吗?
谢谢!
发布于 2021-05-24 16:17:52
执行杂注语句仅为当前会话启用该设置。控制台和编辑器在不同的会话中执行。
只需转到数据源设置的高级选项卡并在那里进行设置。它将应用于所有会话。

发布于 2021-05-23 18:05:42
@forpas要求完整的代码,所以我删除了所有现有的表,并使用了以下代码:
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之前创建表的事实不是问题。我使用了两个控制台,一个用于创建表,另一个用于插入值。我只在第一个中激活了foreign_keys。我以为它是在数据库中激活的,但它与控制台相关。
https://stackoverflow.com/questions/67658028
复制相似问题