【发布时间】:2009-06-26 08:34:26
【问题描述】:
如果记录尚未退出,您需要在表中插入数据
前任:
如果不存在(从表中选择 ID,其中 id=_Id)然后
INSERT INTO tbale(.....)
这可以使用 MySql 中的存储过程轻松完成。但是我想通过编写一个查询语句在 SQLite 中做同样的事情。
请帮忙
【问题讨论】:
-
我为你感到高兴!尝试先检查 sqllite 的文档?
如果记录尚未退出,您需要在表中插入数据
前任:
如果不存在(从表中选择 ID,其中 id=_Id)然后
INSERT INTO tbale(.....)
这可以使用 MySql 中的存储过程轻松完成。但是我想通过编写一个查询语句在 SQLite 中做同样的事情。
请帮忙
【问题讨论】:
INSERT INTO CategoryMaster (CategoryID, CategoryText) SELECT %d,'%@' WHERE NOT EXISTS (SELECT 1 FROM CategoryMaster WHERE CategoryID= %d)
它对我有用:)
【讨论】:
SQlite 没有您需要执行此类逻辑的存储过程。但是你总是可以用简单的 C 函数来扩展 sqlite。或者你可以简单地用你编写程序的任何语言编写这个逻辑。我认为性能影响不是那么大。您的分析是否表明这是一条需要优化的关键路径?
【讨论】:
在 id 列上放置一个唯一索引(或使其成为主键)然后使用:
REPLACE INTO table(.....)
见: http://www.sqlite.org/lang_insert.html 或 http://www.sqlite.org/lang_replace.html
【讨论】:
我会通过运行第一个查询来查看记录是否存在然后决定是运行插入还是更新来做到这一点。我不认为 SQLite 有一个功能齐全的查询语言来支持所需的更短的方法。
【讨论】: