2017-09-30 12 views
0

Sqliteがタイムスタンプをオートポピュレートするようにしたいが、JavaScriptは2つの値(例えばVALUES (?, ?))を渡すことができず、タイムスタンプの3番目の値をSqliteに渡させる。私はnew Date()と3番目の値を提供することができますが、これは好ましい方法ではありません。JavaScriptのsqliteにタイムスタンプを挿入する

以下のコードをそのまま実行すると、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(); 

    }); 

答えて

1

あなたは列のデフォルト値を使用したい場合は、単にINSERTの外にそれを残す:ここで注意すべき

var stmt = db.prepare("INSERT INTO songs (title, lyric) VALUES (?, ?)"); 

2つのこと:

  1. をカラム名を指定しますINSERTステートメントでは、常に良い考え、したがって(title, lyric)追加です。この方法では、プレースホルダが何を参照しているかについてあいまいさはありません。
  2. プレースホルダが2つしかないように、2つの列を指定していて(3番目の列がデフォルト値を使用させる)ようにしています。
関連する問題