微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何知道哪个外键约束在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 举报,一经查实,本站将立刻删除。