我希望INSERT OR REPLACE
由'uuid'列值指定的行。我有我的:
INSERT OR REPLACE INTO feature_layer (id, uuid, feature_collection)
VALUES ((SELECT id FROM feature_layer WHERE uuid=?) , ?, GeomFromGeoJSON(?));
此查询是否会执行我想要的操作,这意味着更新由uuid指定的行,或者如果没有这样的行,则插入新的行?
答案 0 :(得分:1)
假设您的 id 字段定义为 (使用AUTOINCREMENT)
id INTEGER PRIMARY KEY AUTOINCREMENT
正确的陈述将是
INSERT OR REPLACE INTO feature_layer (id, uuid, feature_collection)
VALUES ((SELECT id FROM feature_layer WHERE uuid=?), ?, GeomFromGeoJSON(?));
(您在查询中错过了一个(
)
如果您的 id 字段定义为 (没有AUTOINCREMENT)
id INTEGER PRIMARY KEY
如果没有记录,您需要使用COALESCE
设置新的 ID (我为新的 id 添加了一个?
被发现:
INSERT OR REPLACE INTO feature_layer (id, uuid, feature_collection)
VALUES (COALESCE((SELECT id FROM feature_layer WHERE uuid=?),?) , ?, GeomFromGeoJSON(?));
根据您的需要,当 id 与过滤的 id 相匹配时,您将更新 uuid 和 feature_collection uuid ,如果没有找到记录,那么它将插入一个包含uuid和feature_collection所需值的新记录。
无论如何,请考虑您的 id 字段必须是PRIMARY KEY
才能使用此方法。