合并SQLite多步操作为单查询:检查路径并返回/插入获取folderId
SQLite 单查询实现「存在返回ID,不存在插入后返回ID」
前提准备
首先给folderPath字段添加唯一约束,避免重复插入相同路径:
CREATE UNIQUE INDEX idx_folder_path ON your_table_name(folderPath);
核心查询语句
假设要处理的目标路径是'C:\Users\trump',执行以下复合语句即可完成需求:
WITH insert_attempt AS ( INSERT OR IGNORE INTO your_table_name(folderPath) VALUES ('C:\Users\trump') ) SELECT folderId FROM your_table_name WHERE folderPath = 'C:\Users\trump';
语句解释
INSERT OR IGNORE:尝试插入目标路径,若路径已存在(触发唯一约束),则直接忽略插入操作,不会报错。- 后续的
SELECT:直接查询目标路径对应的folderId,无论路径是原本存在还是刚插入的,都能返回正确的ID。
注意事项
- 替换语句中的
your_table_name为你的实际表名。 - 代码中使用时建议用参数化查询(比如用
?作为占位符),避免SQL注入风险,示例:INSERT OR IGNORE INTO your_table_name(folderPath) VALUES (?); SELECT folderId FROM your_table_name WHERE folderPath = ?;
内容的提问来源于stack exchange,提问作者bajirao
相关产品推荐
相关产品推荐

