Sqlite Mono upsert
Sqlite Mono upsert
根据此处类似问题的各种示例,我尝试在单声道中使用 sqlite 组合一个更新插入。
string query = string.Format(@"
UPDATE {0} SET data=@data, protoent=@protoent, posX=@pX, posY=@pY, posZ=@pZ, ownerpubkey=@ownerpubkey WHERE key=@key;
INSERT INTO {0} (key, data, protoent, posX, posY, posZ, ownerpubkey) VALUES (@key, @data, @protoent, @pX, @pY, @pZ, @ownerpubkey) WHERE changes() = 0;
", PersistEntityRecord.TableName);
出于某种原因,我遇到了异常,因为它似乎不喜欢 INSERT 行的 WHERE 部分
Exception thrown: 'Mono.Data.Sqlite.SqliteException' in Mono.Data.Sqlite.dll
Additional information: SQLite error
near "WHERE": syntax error
如果我删除 INSERT 行上的 WHERE,它就会运行。我不确定为什么它不像那部分。
SqliteConnection.SQLiteVersion 如果有帮助,请报告版本 3.11.0
谢谢
INSERT statement有两种形式。
WHERE 子句只能用于使用 SELECT 查询指定要插入的值的形式:
UPDATE {0}
SET data=@data, protoent=@protoent, posX=@pX, posY=@pY, posZ=@pZ, ownerpubkey=@ownerpubkey
WHERE key=@key;
INSERT INTO {0} (key, data, protoent, posX, posY, posZ, ownerpubkey)
SELECT @key, @data, @protoent, @pX, @pY, @pZ, @ownerpubkey
WHERE changes() = 0;
在您的代码中执行逻辑可能更容易:
execute("UPDATE ...");
if (connection.Changes == 0) {
execute("INSERT ...");
}
根据此处类似问题的各种示例,我尝试在单声道中使用 sqlite 组合一个更新插入。
string query = string.Format(@"
UPDATE {0} SET data=@data, protoent=@protoent, posX=@pX, posY=@pY, posZ=@pZ, ownerpubkey=@ownerpubkey WHERE key=@key;
INSERT INTO {0} (key, data, protoent, posX, posY, posZ, ownerpubkey) VALUES (@key, @data, @protoent, @pX, @pY, @pZ, @ownerpubkey) WHERE changes() = 0;
", PersistEntityRecord.TableName);
出于某种原因,我遇到了异常,因为它似乎不喜欢 INSERT 行的 WHERE 部分
Exception thrown: 'Mono.Data.Sqlite.SqliteException' in Mono.Data.Sqlite.dll
Additional information: SQLite error
near "WHERE": syntax error
如果我删除 INSERT 行上的 WHERE,它就会运行。我不确定为什么它不像那部分。
SqliteConnection.SQLiteVersion 如果有帮助,请报告版本 3.11.0
谢谢
INSERT statement有两种形式。 WHERE 子句只能用于使用 SELECT 查询指定要插入的值的形式:
UPDATE {0}
SET data=@data, protoent=@protoent, posX=@pX, posY=@pY, posZ=@pZ, ownerpubkey=@ownerpubkey
WHERE key=@key;
INSERT INTO {0} (key, data, protoent, posX, posY, posZ, ownerpubkey)
SELECT @key, @data, @protoent, @pX, @pY, @pZ, @ownerpubkey
WHERE changes() = 0;
在您的代码中执行逻辑可能更容易:
execute("UPDATE ...");
if (connection.Changes == 0) {
execute("INSERT ...");
}