Обновление:
Вот что я узнал из ответов ниже ...
SQLite поддерживает определение значений по умолчанию для столбцов. Однако он не поддерживает какую-либо форму ключевого слова DEFAULT или функцию в запросах. Таким образом, фактически невозможно выполнить массовую вставку в стиле MySQL, когда столбец задан явно в некоторых строках, а столбец по умолчанию используется в других строках.
Ниже перечислены несколько творческих обходных путей,но для простоты я больше всего предпочитаю предложение Шона использовать оператор INSERT для каждой строки, возможно, все это заключено в оператор BEGIN TRANSACTION. Только это позволит вам использовать значения по умолчанию для столбцов.
Исходный вопрос:
У меня есть простая таблица SQLite с именем todo
с этой схемой ...
Я могу вставить строки в эту таблицу с помощью этого синтаксиса ...
INSERT INTO 'todo' ('title', 'complete', 'notes') VALUES
('Pickup dry cleaning', true, 'They close at 7pm'),
('Clean apartment', false, 'Floors have already been swept'),
('Finish homework', true, 'Chapters 3 and 4');
Однако
Я не могу понять, как опустить определенные значения и позволить базе данных использовать значение по умолчанию для этого столбца.
Например, столбец complete
имеет значение по умолчанию 0
,Было бы неплохо иметь возможность передать undefined
в качестве одного из значений в моем запросе, таким образом сигнализируя SQLite, что я хотел бы использовать любой столбец по умолчанию, но я получаю ошибку Result: no such column: undefined
, когда я пытаюсь это сделать.
null
также не будет работать в этом случае, потому что иногда вы хотите явно установить значение ячейки в null. Вы не можете просто пропустить значение, потому что параметры позиционные.