Class::DBIで日付型データの登録
登録日時という項目があるのでcreate()したときにシステム日時を設定したかったのですが、やり方が分からなくてはまりました。DBIでやるときは自分でSQLを書くから困らないのですけどね。Class::DBIでも直接SQLを書くことができるのですが、いまいちな感じがするのでやり方を調べました。
方法その1はadd_trigger()を使う方法。
__PACKAGE__->add_trigger(after_create => \&after_create);
としておいて、after_create()の中でUPDATEを発行します(結局自分でSQLを書くことになります)。
方法その2はset_sql()を使う方法(create_dateが項目名です)。
__PACKAGE__->set_sql(MakeNewObj => <<EOD); insert into __TABLE__ (create_date, %s) values (CURRENT_TIMESTAMP, %s) EOD
これでcreate()してinsertのSQLが作成される際に自動的に登録日時も設定されます。
上記どちらの方法でもうまくいきましたが、方法2を採用しました。