gpt4 book ai didi

sqlite - ON CONFLICT(id) DO UPDATE SET 不适用于 DELPHI 10.3.1 中的 FireDAC

转载 作者:行者123 更新时间:2023-12-03 17:41:51 26 4
gpt4 key购买 nike

附加第二个数据库后,我尝试使用 ON CONFLICT(id) DO UPDATE 在第一个数据库的表中插入和更新数据。字段 id 是第一个表的主键。

  FDQuery1.EXECSQL('ATTACH ''D:\Update2019.DB'' AS DBUpdate');

FDQuery1.SQL.Text:=
'INSERT INTO acts (id,title) SELECT id,title FROM DBUpdate.acts'+
' WHERE (DBUpdate.acts.id >100)'+
' ON CONFLICT(id) DO UPDATE SET'+
' title=excluded.title;'
FDQuery1.ExecSQL;

我收到错误消息:““ON”附近的错误:语法错误”
当我删除 WHERE (DBUpdate.acts.id >100 条件
错误消息为:““DO”附近的错误:语法错误”。

相同的查询在 SQLITESTUDIO 中运行良好。

最佳答案

正如注释中正确指出的那样,您的应用程序使用的 SQLite 不支持此语法。您将需要使用更新版本的 SQLite。为此,请关注 动态链接 FireDAC SQLite connection 段|主题,否则 Delphi 使用与它一起分发的版本的静态链接 SQLite 对象构建您的 FireDAC 应用程序(这使得您的应用程序依赖于这样的 SQLite 版本,无论周围有什么 SQLite DLL)。

只是不要忘记最重要 该任务的一部分;修改 FireDAC.inc 包含文件以使用动态链接。如果您不想破坏您的 Delphi 设置源文件夹,例如将所有 FireDAC 模块复制到其他地方,将它们添加到项目的构建搜索路径中,然后修改 FireDAC.inc 在那里包含文件。

关于sqlite - ON CONFLICT(id) DO UPDATE SET 不适用于 DELPHI 10.3.1 中的 FireDAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58982771/

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