INSERT / DELETE / UPDATE

INSERT

 $rs->create({
    name  => "taro",
    email => "taro@example.com"
 });

シリアル型のキーを取得(last_insert_id())

 $user = $rs->create( { name  => "taro" } );
 $id =  $user->id;

UPDATE

 $rs->email('taro@example.com');
 $rs->update;

または

 $rs->update( { email => 'taro@example.com' } );

まとめてUPDATE

 $rs->search( { name => 'taro' } )->update_all( { email => 'taro@example.com' } );

http://search.cpan.org/perldoc?DBIx::Class::ResultSet#create

DELETE

まとめてDELETE

 $rs->search( { name =>'taro' } )->delete_all;

既存のレコードがあればそのrowオブジェクト、なければ新規のrowオブジェクトを返す

find_or_new()

 $user = $rs->find_or_new({ id => 10 },{ key => 'primary' });
 $user->name('taro');
 $user->update; # または $user->insert
  • idが10のレコードが存在すればそのrowオブジェクトが、なければ新規のrowオブジェクト(idは10)が作られる。
  • idがシリアル型(AUTO_INCREMENT)の場合、id => undef とすると、シリアル型に沿ったidのrowオブジェクトが作られる。
  • レコードを修正する際は、既存のrowオブジェクトの場合はupdate()、新規のrowオブジェクトの場合はinsert()する。
  • keyはprimary key以外のカラムを指定出来るが、カラムはユニーク制約を持つ必要がある。
  • http://search.cpan.org/perldoc?DBIx::Class::ResultSet#find_or_new

find_or_create()

このメソッドを実行した時点で、DBにレコードがINSERTされる。その際、id以外のカラムはNULLになる。

update_or_new()

 $user = $rs->update_or_new({ id => 10, name => 'taro' },{ key => 'primary' });
 $user->update; # または $user->insert

update_or_create()

このメソッドを実行した時点で、DBにレコードがINSERTまたはUPDATEされる。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS