如何解决当在其他表B,C等中将列作为FOREIGN KEYS引用列时,SQLite从表A中删除行
Table G
gNo | gName | gAddress
G1 | Jean | Bonalbo
G2 | Oscar | Berlin
G3 | Edd | Brisbane
G4 | Bob | California
Table B
gNo | gdate | rNo
G1 | 2019 | R21
G2 | 1993 | R03
G3 | 1989 | R26
G4 | 2020 | R04
现在,我需要从表G中删除最后一行,但是sqlite一直说存在FOREIGN KEY约束失败。这就是我所做的:
DELETE FROM G WHERE gNo = 'G4';
我知道还不完整。我尝试在该行的末尾使用CASCADE,但是会引发错误。然后,我尝试使用DELETE FROM G JOIN Table B WHERE gNo = 'G4';
,但也无济于事。
我在这里很迷路。
有帮助吗?
解决方法
您不能删除另一张表中的行所引用的行,这是外键的功能之一。
通常,您通常需要先删除子记录:
delete from b where gno = 'G4';
delete from g where gno = 'G4);
否则,您需要更改外键的定义,使其包含on delete cascade
选项:
create table b (
gno text references g(gno) on delete cascade,gdate int,rno text,...
);
,
您需要使用cascade
定义外键约束。您可以删除现有约束并将外键定义为:
create table b (
. . .,gno int references g(gno) on delete cascace
);
这告诉数据库,当您删除主表中的一行时,也要删除引用。
Here是db 小提琴。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。