コードを舐める日々

わからないことがわからないことをしる日々

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
という記事があるのかな。
最近新しい発見多い。