gpt4 book ai didi

sqlite - 在SQLite中为全文搜索索引创建SQL触发器

转载 作者:行者123 更新时间:2023-12-03 19:35:47 27 4
gpt4 key购买 nike

我正在尝试为常规表创建触发器,然后在SQLite中更新全文本索引,但是我遇到了一些错误,而且我不确定哪里出了问题。

我正在制作的应用程序是一个书签应用程序,我将书签数据保存到的数据库是使用以下SQL语句创建的:

create table "pages" (
"pageUrl" text not null unique on conflict replace,
"dateCreated" integer not null,
"pageDomain" text not null,
"pageTitle" text null,
"pageText" text null,
"pageDescription" text null,
"archiveLink" text null,
"safeBrowsing" text null,
primary key ("pageUrl")
);


然后使用以下内容创建全文搜索索引:

create virtual table fts using fts5(
content='pages',
content_rowid='pageUrl',
pageDomain,
pageTitle,
pageText,
pageDescription
);


因此,当我通过插入或删除更新“页面”表时,我想更新fts索引。

我要插入的触发器:

create trigger afterPagesInsert after insert on pages begin
insert into fts(
rowid,
pageDomain,
pageTitle,
pageText,
pageDescription
)
values(
new.pageUrl,
new.pageDomain,
new.pageTitle,
new.pageText,
new.pageDescription
);
end;


我具有删除的触发器:

create trigger afterPagesDelete after delete on pages begin
insert into fts(
fts,
rowid,
pageDomain,
pageTitle,
pageText,
pageDescription
)
values(
'delete',
old.pageUrl,
old.pageDomain,
old.pageTitle,
old.pageText,
old.pageDescription
);
end;


这是我正在使用的sql插入语句的示例:

insert into "pages" (
"pageUrl",
"dateCreated",
"pageDomain",
"pageTitle",
"pageText",
"pageDescription",
"archiveLink",
"safeBrowsing"
)
values(
'https://www.reddit.com/',
1456465040177,
'reddit.com',
'reddit: the front page of the internet',
'reddit: the front page of the internet',
'reddit: the front page of the internet',
NULL,
NULL
)


和delete语句:

delete from "pages" where "pageUrl" = 'https://www.reddit.com/'


但是,插入和删除触发器都出现 SQLITE_MISMATCH: datatype mismatch] errno: 20, code: 'SQLITE_MISMATCH'错误,我想这似乎表明错误的数据进入了错误的列,但是我不确定为什么。我已经遍历 docs here的“外部内容表”部分中的“触发器”部分,并且已经按照列出的内容进行操作,所以我不确定哪里出了问题。

任何帮助,将不胜感激。

注意:我正在使用fts5版本的SQLite全文搜索: https://www.sqlite.org/fts5.html

最佳答案

content_rowid必须引用实际表的rowid,即INTEGER PRIMARY KEY列。

关于sqlite - 在SQLite中为全文搜索索引创建SQL触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35644796/

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