【SQLiteメモ】DEFAULT制約を使ってINSERT時に自動でタイムスタンプを設定する。
CREATE TABLE GPS_Logger (     
    ID INTEGER PRIMARY KEY AUTOINCREMENT,      
    CREATOR TEXT,      
    TIMESTAMP VARCHAR(19)      
    )
今まで、SQLiteで何かのデータを保存する場合、上のようなテーブルを作って、TIMESTAMPには自力で値を設定してました。
今日調べ物をしていて気がついたのですが、DEFAULT制約というのがあるんですね。
デフォルト値を設定できるんですけど、
DEFAULT制約 – テーブルの作成 – SQLite入門
上記のサイトを参考にテーブルを作りなおすと
CREATE TABLE GPS_Logger (     
    ID INTEGER PRIMARY KEY AUTOINCREMENT,      
    CREATOR TEXT,      
    TIMESTAMP TIMESTAMP CURRENT_TIMESTAMP  
    )
名前も型もTIMESTAMPで紛らわしいですが、型はTEXT、VARCHAR(19)、TIMESTAMPのどれでもいいです。   
AUTOINCREMENT制約は付けても付けなくてもPRIMARY KEYならINSERTする度に自動でIDをインクリメントしていきますが、AUTOINCREMENT制約をつけているとレコードが削除されても、同じIDを振ってしまうことがありません。
これで、INSERT時に値を指定しなければTIMESTAMPにはタイムスタンプが自動で指定されます。ただしUTCです。
CURRENT_TIME         HH:MM:SS     
CURRENT_DATE         YYYY-MM-DD      
CURRENT_TIMESTAMP    YYYY-MM-DD HH:MM:SS
DEFAULT成約時は上記の指定できるようです。ただしUTCです。
やはりタイムゾーンをローカルのタイムゾーンで利用したい場合もありますよね。調べてみました。下記サイト様を参考にしました。
90H Tech: SQLiteでTIMESTAMP列のデフォルト値のタイムゾーンをJSTにする
CREATE TABLE GPS_Logger (     
    ID INTEGER PRIMARY KEY AUTOINCREMENT,      
    CREATOR TEXT,      
    TIMESTAMP TIMESTAMP DEFAULT (DATETIME(‘now’,’localtime’))      
    )
ローカルタイムで利用したい場合上記の様になります。
CURRENT_TIMEやCURRENT_DATEについても同様にローカルのタイムゾーンで処理したい場合はdeteやtime関数を使えばできると思います。
    $hst = $dbh->prepare(‘INSERT INTO GPS_Logger VALUES(null,?,null)’);     
    $retval = $hst->execute($creator);
で、cgiからDBIで利用した時にprepareの指定を上のように指定たのですが、うまくいきませんでした。値が設定されません。項目を削るとエラーになるし、指定しないってどうしたらいいんだろう?と思ってしばらく悩みましたが、
    $hst = $dbh->prepare(‘INSERT INTO GPS_Logger(CREATOR) VALUES(?)’);     
    $retval = $hst->execute($creator);
こうすればよかったんですね、INSERT文の基本的な構文を忘れてしまってました。アホですね。
又ひとつかしこくなりましたw。


























![覆面ビリオネア[Undercover Billionaire]のUnderdog BBQでクビになったクリスティン・ミュアーのその後が気になったので調べてみた undercover billionaire](https://i0.wp.com/blog.kumacchi.com/wp-content/uploads/2022/07/undercoverbillionaire.jpg?resize=120%2C120&ssl=1)



![[Android]ASUS MeMo Pad 8 AST21を購入>WW化>root化>ロリポ化 P1160176_R](https://i0.wp.com/blog.kumacchi.com/wp-content/uploads/2015/09/P1160176_R_thumb1.jpg?resize=120%2C120&ssl=1)

![[RAMディスク]Gavotte Ramdiskを導入してみた。 Windows XP – システムプロパティ](https://i0.wp.com/blog.kumacchi.com/wp-content/uploads/2014/02/img_20080517T052214275.jpg?resize=120%2C120&ssl=1)












