gpt4 book ai didi

sqlite - SQLite3-BLOB上的外键不匹配

转载 作者:行者123 更新时间:2023-12-03 19:37:50 24 4
gpt4 key购买 nike

我正在使用外键,不幸的是,在以下情况下,我无法解决不匹配问题...我缺少什么?这些高音是通过以下方式创建的:

CREATE TABLE IF NOT EXISTS `devices` (
`guid` BLOB NOT NULL,
`device_name` TEXT NOT NULL,
`class` INTEGER NOT NULL
);

CREATE TABLE IF NOT EXISTS `device_states` (
`guid_d` BLOB NOT NULL,
`id_d` TEXT DEFAULT NULL,
`tp` INTEGER NOT NULL,
`state` INTEGER NOT NULL,
`note` TEXT DEFAULT NULL,
`status` INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY(`guid_d`,`tp`),
FOREIGN KEY(`guid_d`) REFERENCES devices ( `guid` ) ON DELETE RESTRICT
);
CREATE INDEX IF NOT EXISTS idx_ds_tp ON device_states(`tp`);

INSERT OR IGNORE INTO `devices` VALUES (x'438D6E77DC3946A4819617ADBA18ADB2','guid_door', 1);


选择波纹管按预期方式工作:

SELECT * FROM `devices` WHERE guid = x'438D6E77DC3946A4819617ADBA18ADB2';



1行从以下位置返回:SELECT * FROM devices WHERE guid = x'438D6E77DC3946A4819617ADBA18ADB2'; (耗时1毫秒)


但是,当我尝试将数据插入设备表时,出现错误...

INSERT INTO device_states (guid_d, id_d, tp, state, note, status) 
VALUES (x'438D6E77DC3946A4819617ADBA18ADB2', "D", 132456, 1, "door open", 2);



外键不匹配-引用“设备”的“ device_states”:INSERT
INTO device_states(guid_d,id_d,tp,状态,注释,状态)VALUES
(x'438D6E77DC3946A4819617ADBA18ADB2',“ D”,132456,1,“开门”,2);


有人看到这个问题了吗?非常感谢!

最佳答案

documentation说:


通常,外键约束的父键是父表的主键。如果它们不是主键,则父键列必须共同受UNIQUE约束或具有UNIQUE索引。


guid没有这样的约束。

关于sqlite - SQLite3-BLOB上的外键不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32865680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com