如果记录尚未退出,则需要在表格中插入数据
例如:
如果不是EXISTS(SELECT Id FROM table WHERE id = _Id)那么
INSERT INTO tbale(.....)
这可以使用MySql中的存储过程轻松完成。但是我想通过编写单个查询语句在SQLite中做同样的事情。
请求帮助
答案 0 :(得分:3)
INSERT INTO CategoryMaster(CategoryID,CategoryText)SELECT%d,'%@'WHERE NOT EXISTS(SELECT 1 FROM CategoryMaster WHERE CategoryID =%d)
它为我工作:)
答案 1 :(得分:1)
SQlite没有你需要做这样的逻辑的存储过程。但是你总是可以使用简单的C函数扩展sqlite。或者你可以用你编写程序的任何语言简单地编写这个逻辑。我认为性能不是很好。您的分析是否表明这是一条需要优化的关键路径?
答案 2 :(得分:0)
在id列上放置一个唯一索引(或使其成为主键),然后使用:
REPLACE INTO table(.....)
请参阅: http://www.sqlite.org/lang_insert.html或http://www.sqlite.org/lang_replace.html
答案 3 :(得分:0)
我会通过运行第一个查询来查看记录是否存在然后决定是否运行插入或更新。我不认为SQLite有一个功能齐全的查询语言来支持所需的更短的方法。