此问题已在此处有答案:
Does SQLite3 not support foreign key constraints?(5个答案)
15天前关闭。
我正在使用sqlite-jdbc 3.36.0.3,它是一个“用于在Java中访问和创建SQLite数据库文件的库(它包括本机库)”。SQLite documentation shows SQLite支持ON DELETE CASCADE
。执行以下命令不会触发级联删除,因此“Jon”已被删除,但“Scruffy”和“Poochy”未被删除。
sqlite-jdbc是否存在错误3.36.0.3?是否有其他人遇到过ON DELETE CASCADE
未被尊重的问题?
CREATE TABLE Person(
[Id] [INTEGER] PRIMARY KEY NOT NULL,
[Name] [TEXT] NOT NULL
);
CREATE TABLE Pet(
[Id] [INTEGER] PRIMARY KEY NOT NULL,
[Name] [TEXT] NOT NULL,
[PersonId] [INTEGER] NOT NULL,
FOREIGN KEY (PersonId)
REFERENCES Person (Id)
ON DELETE CASCADE
);
INSERT INTO Person(Id, Name)
VALUES (1, "Jon");
INSERT INTO Pet(Id, Name, Person_id)
VALUES (1, "Scruffy", 1), (2, "Poochy", 1);
DELETE FROM Person WHERE Id=1; -- "Jon" (Person) is removed, but not the pets (Scruffy/Poochy)
1条答案
按热度按时间cwtwac6a1#
Person
没有引用Pet
,那么删除的Person
如何知道存在哪些FK引用?通常情况下,从
Person
到Pet
有一个FK,它级联删除和反向引用,即1:0-n
-〉1 Person: 0-n Pets
。