问题描述
问题很简单。当外键约束在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 (将#修改为@)