DBIx::Skinny を活用したテーブル設計で思うこと
MySQL 側で TIMESTAMP を利用して新規作成、更新していいのかな
Perl 側で DateTime モジュールを利用し、テーブルの型は DATE 型 もしくは VARCHAR 型? がベストだろうか。
その起因は、下記のコードから。
#!/usr/bin/perl; use strict; use warnings; use lib './'; use Web::DB; use Data::Dumper; my $db = Web::DB->new; my $row = $db->create('webmemo', { title => 'test', body => 'hogehoge', } ); print $row->memo_id."\n"; print $row->title."\n"; print $row->body."\n"; print $row->created_at."\n"; # ここでエラーが出る。 print $row->updated_at."\n";
$db->create のあと、DB へデータを入れる時点で時間がスタンプされるため、
Perl 側で created_at が生成されていないからエラーが出てしまう。
$db->create のあとに、$row = $db->search('webmemo')->first; と書いておくと、
全てのデータを取り出せる。
そこで、 Perl 側で、時間をとるほうが $db->create の1回だけで挿入したデータの
再利用ができるように感じる。
DBIx::Skinny しか試していないが、他の DBIx::Class とかの O/R マッパーは同じなのかな。
しかし、 MySQL への挿入タイミング関係で、そのタイムラグは避けられないということから、Schemaの設定について2 #04 - JPerl Advent Calendar 2009
という記事があるのかな。
最近新しい発見多い。