Другой подход заключается во вставке ... SELECT ... WHERE ... EXISTS [или нет] (SELECT ...);
Я все время так делаю и используюПредложение jklemmack также.И я делаю это также и для других целей, например, для выполнения СОЕДИНЕНИЙ в ОБНОВЛЕНИЯХ (которые SQLite3 не поддерживает).
Например:
CREATE TABLE t(id INTEGER PRIMARY KEY, c1 TEXT NOT NULL UNIQUE, c2 TEXT);
CREATE TABLE r(c1 TEXT NOT NULL UNIQUE, c2 TEXT);
INSERT OR REPLACE INTO t (id, c1, c2)
SELECT t.id, coalesce(r.c1, t.c1), coalesce(r.c2, t.c2)
FROM r LEFT OUTER JOIN t ON r.c1 = t.c1
WHERE r.c2 = @param;
ГДЕ там есть условие, что вы 'иметь в вашем ЕСЛИ.JOIN в SELECT обеспечивает соединение, которое SQLite3 не поддерживает в UPDATE.INSERT OR REPLACE и использование t.id (которое может быть NULL, если строка не существует в t) вместе предоставляют тела THEN и ELSE.
Вы можете применять это снова и снова.Если у вас есть три утверждения (которые не могут быть каким-то образом объединены в одно) в ТОЧНОЙ части IF, вам нужно иметь три утверждения с условием IF в их ГДЕ.