如何在websql中通过一次查询检查数据是否存在并插入?

How to check whether data exists and insert by one query in websql?

我可以有一个完整的查询来检查数据是否已经在数据库中,如果没有则插入吗?

我相信这可以通过使用 TRANSACTION 在正常 SQL 中完成。

考虑不做手动SELECT查询然后INSERT我有超过1个table要完成。

由于 WebSQL 是 SQLite 的一个实现,您可以使用 INSERT OR IGNORE 在单个事务中管理 conflict resolution

例如,如果您有以下 table:

CREATE TABLE data (id INTEGER PRIMARY KEY, event_id INTEGER, track_id INTEGER, value INTEGER);
CREATE UNIQUE INDEX data_idx ON data(event_id, track_id);

其中已包含数据:

1|1|2|3
2|2|3|4

您可以发出以下顺序语句:

INSERT OR IGNORE INTO data VALUES (NULL, 1, 2, 3);
INSERT OR IGNORE INTO data VALUES (NULL, 2, 3, 5);
INSERT OR IGNORE INTO data VALUES (NULL, 3, 4, 5);

SELECT * FROM data 的结果将是:

1|1|2|3
2|2|3|4
3|3|4|5

现有行不会因为约束冲突而更新,但前 2 条语句将被忽略而不是失败,因此第三条语句将成功执行并插入第三行。