gpt4 book ai didi

sqlite - sqlite rtree:约束失败(与普通表一起使用)

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

我正在尝试使用Rtree并面对这种奇怪的行为:INSERT语句在普通表中正常工作,但在rtree表中却失败了:

这个例子很好用:

DROP TABLE IF EXISTS ltssoffsets;
CREATE TABLE ltssoffsets(id TEXT NOT NULL,
offset_start INT NOT NULL,
gene_start INT NOT NULL,
chr TEXT NOT NULL, start INT, end INT,
PRIMARY KEY (id, offset_start) );

INSERT INTO ltssoffsets VALUES("first", -10, 45, "chr2", 30, 40);
INSERT INTO ltssoffsets VALUES("first", -5, 45, "chr2", 30, 40);


此失败:

DROP TABLE IF EXISTS ltssoffsets;
CREATE VIRTUAL TABLE ltssoffsets USING rtree(id TEXT NOT NULL,
offset_start INT NOT NULL,
gene_start INT NOT NULL,
chr TEXT NOT NULL, start INT, end INT,
PRIMARY KEY (id, offset_start) );

INSERT INTO ltssoffsets VALUES("first", -10, 45, "chr2", 30, 40);
INSERT INTO ltssoffsets VALUES("first", -5, 45, "chr2", 30, 40);

-> Error: constraint failed


这里有什么问题?

最佳答案

虚拟表的行为不像常规表。
列类型和约束的处理方式取决于虚拟表的实现。

R-tree documentation说:


SQLite R * Tree的第一列必须始终是整数主键。最小值/最大值对列存储为32位浮点值[...]


您的R树表仅具有一个整数主键列id和四个坐标列。您的所有类型和约束都将被忽略。

R树应被用作索引,而不是表。


R * Tree索引存储的关于对象的唯一信息是其整数ID和其边界框。附加信息需要存储在单独的表中,并使用主键与R * Tree索引相关。

关于sqlite - sqlite rtree:约束失败(与普通表一起使用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32899608/

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