В SQLite нет конструкции if then else, что эквивалентно CASE при выполнении ELSE END. Тем не менее, вы можете сделать только одно утверждение как таковое одновременно, хотя такие заявления могут быть довольно сложными.
Я думаю, что следующее соответствует тому, что вы хотите, но неясно, что обновить запись означает ни что не значит вставить запись означает.
DROP TABLE IF EXISTS thetable;
CREATE TABLE IF NOT EXISTS thetable (id INTEGER PRIMARY KEY, field1, field2, field3);
INSERT INTO thetable (field1,field2,field3) VALUES('testcase','othercase','aa'),('nottestcase','notothercase','bb'),('nottestcase','othercase','cc'),('testcase','notothercase','dd');
SELECT * FROM thetable;
INSERT INTO theTable SELECT null,field1,field2,null FROM thetable WHERE NOT (field1 = 'testcase' OR field2 = 'othercase');
UPDATE theTable SET field3 = (SELECT id FROM thetable WHERE field3 IS NULL) WHERE (NOT (field1 = 'testcase' OR field2 = 'othercase')) AND field3 IS NOT NULL;
UPDATE theTable SET field3 = 'mynewfield3value' WHERE field1='testcase' OR field2 = 'othercase';
SELECT * FROM thetable;
DROP TABLE IF EXISTS thetable; /* cleanup test environment*/
- Первые 3 оператора создают среду, то есть заполненную таблицу.
- 4-й оператор показывает таблицу перед любыми изменениями.
- 5-й оператор вставляетновая строка, ЕСЛИ есть строка (или строки) для условия - нет записи найдено.
- Поскольку вопрос о том, что вставлено в значения поля 1 и поля 2 или скопировано из строки - нет записи, строки, идентификатор (если принять этот идентификатор)является типичным идентификатором, который генерируется автоматически) создается автоматически, field3 имеет значение NULL (используется для различения вновь добавленной строки).
- Если нет - нет записи , тогда ничего не будет вставлено.
- 6-й оператор обновляет другие - найдены строки, НО НЕ вновь вставленные - даже там не было ряд.
- Эта строка может быть легко изменена, если поле 3 легко выбрать NULL.
- 7-е показывает таблицу после изменений.
- 8-е очищаетдо среды (т.е. отбрасывает таблицу)
Результат 1
![enter image description here](https://i.stack.imgur.com/njOJK.png)
- Подсвеченная строка - это - нет записи строка.
Результат 2
![enter image description here](https://i.stack.imgur.com/7MaNU.png)
- Новая строка сдобавлен идентификатор 5 .
- Строка - нет записи строка была обновлена с идентификатором новой строки.
- Строки 1,3 и 4 ( - найдена запись строк) обновлены.
- Неясно, что должно произойти с новымряд.