我希望Sqlite自动填充时间戳,但Javascript不允许我只传递2个值(如VALUES (?, ?)
)并让Sqlite处理时间戳的第3个值。我知道我可以使用new Date()
提供第3个值,但这不是首选方式。
如果我按原样运行以下代码,则timestamp列全部为null。
这样做的正确方法是什么?
db.serialize(function () {
db.run("CREATE TABLE if not exists songs (title TEXT, lyric TEXT, timestamp DATATIME DEFAULT CURRENT_TIMESTAMP)");
var stmt = db.prepare("INSERT INTO songs VALUES (?, ?, ?)");
for (var i = 0; i < 10; i++) {
stmt.run("Title" + i, "Lyric" + i);
}
stmt.finalize();
});
答案 0 :(得分:1)
如果要使用列的默认值,则只需将其从INSERT中删除:
var stmt = db.prepare("INSERT INTO songs (title, lyric) VALUES (?, ?)");
这里有两点需要注意:
INSERT
语句中指定列名称总是一个好主意,因此添加了(title, lyric)
。通过这种方式,占位符所指的内容并不含糊。