【发布时间】:2019-11-04 14:18:05
【问题描述】:
更新:
这是我从下面的答案中学到的……
SQLite 支持在列上定义默认值。但是,它不支持查询中任何形式的 DEFAULT 关键字或函数。因此,实际上,不可能执行 MySQL 样式的批量插入,其中在某些行中显式设置列,而在其他行中使用列默认值。
下面列出了几个创造性的解决方法,但为了简单起见,我最喜欢 Shawn 的建议,即每行使用一个 INSERT 语句,可能都包含在 BEGIN TRANSACTION 语句中。只有这样,您才能使用列默认值。
原问题:
我有一个名为 todo 的简单 SQLite 表,具有此架构...
我可以用这种语法在这个表中插入行...
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。您也不能简单地省略该值,因为参数是位置参数。
【问题讨论】: