如何知道哪个外键约束在SQLite中失败?

问题描述

问题很简单。当外键约束在sqlite中失败时,我不知道如何确定哪个失败。

PRAGMA foreign_keys=1;
DROP TABLE IF EXISTS TEMP.child;
DROP TABLE IF EXISTS TEMP.parent;

CREATE TEMP TABLE parent (
    id INTEGER PRIMARY KEY
);

CREATE TEMP TABLE child (
    id INTEGER PRIMARY KEY,parent_id1 INTEGER NOT NULL,parent_id2 INTEGER NOT NULL,name TEXT NOT NULL,CONSTRAINT no_a CHECK (name IS NOT 'a'),CONSTRAINT fk1 FOREIGN KEY (parent_id1) REFERENCES parent (id),CONSTRAINT fk2 FOREIGN KEY (parent_id2) REFERENCES parent (id)
);

在每个查询下面,我将粘贴错误/结果。您将看到错误显示的命名约束no_a,但外键则没有。

INSERT INTO TEMP.child VALUES (1,'a');
-- [19:43:32] Error while executing sql query on database 'petstore': CHECK constraint Failed: no_a

INSERT INTO TEMP.child VALUES (1,'b');
-- [19:44:28] Error while executing sql query on database 'petstore': FOREIGN KEY constraint Failed

INSERT INTO TEMP.parent VALUES (1);
-- [19:44:50] Query finished in 0.000 second(s). Rows affected: 1

INSERT INTO TEMP.child VALUES (1,1,'b');
-- [19:46:03] Error while executing sql query on database 'petstore': FOREIGN KEY constraint Failed

INSERT INTO TEMP.child VALUES (1,'b');
-- [19:46:11] Error while executing sql query on database 'petstore': FOREIGN KEY constraint Failed

INSERT INTO TEMP.child VALUES (1,'b');
-- [19:46:18] Query finished in 0.001 second(s). Rows affected: 1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)