INSERT / DELETE / UPDATE 基本INSERT my $user = $rs->create({
name => "taro",
email => "taro@example.com"
});
DBの関数を使う my $user = $rs->create( { create_time => \'NOW()'} ); # 関数名をスカラリファレンスにする
シリアル型のキーを取得(last_insert_id()) $user = $rs->create( { name => "taro" } );
$id = $user->id;
UPDATE1件更新 $rs->email('taro@example.com');
$rs->update;
または $rs->update( { email => 'taro@example.com' } );
まとめて更新 $rs->search( { name => 'taro' } )->update_all( { email => 'taro@example.com' } );
http://search.cpan.org/perldoc?DBIx::Class::ResultSet#create DELETE1件削除$rs->find(3)->delete(); まとめて削除 $rs->search( { name =>'taro' } )->delete_all;
INSERT兼UPDATEfind_or_new()キーで検索し、見つかれば既存レコードを返し、なければ新規レコードを返す。 my $user = $rs->find_or_new(id => 10); # プライマリキーで検索し、
if ($user->in_storage) { # $userが既存レコードか新規レコードかをin_storage()で調べる
$user->update({name => 'taro'}); # 既存レコードならupdate()する
} else {
$user->name('taro'); # 新規レコードならinsert()する
$user->insert;
}
find_or_create()キーで検索し、見つかれば既存レコードを返し、なければ新規にINSERTしてレコードを返す。 my $user = $rs->find_or_create(id => 10, name => 'taro'); # プライマリキーで検索し、レコードが見つからなければINSERTし、
# レコードが見つかればそれを返す(但し、name列は更新されていない)
if ($user->in_storage) { # よってこのin_storage()は常に真
}
update_or_new()キーで検索し、見つかればUPDATEしてレコードを返し、なければ新規レコードを返す。 $user = $rs->update_or_new(id => 10, name => 'taro'); # プライマリキーで検索し、レコードが見つかれば、この時点でUPDATEする
# UPDATE user SET name = 'taro' WHERE id = 10
if ($user->in_storage) { # レコードが見つからなければ、明示的にinsert()する
$user->insert; # INSERT INTO user (id, name) VALUES (10, 'taro')
}
update_or_create()キーで検索し、見つかればUPDATEしてレコードを返し、なければ新規にINSERTしてレコードを返す。 my $user = $rs->update_or_create(id => 10, name => 'taro'); # プライマリキーで検索し、
# この時点で、レコードが見つかればUPDATE、なければINSERTする
if ($user->in_storage) { # よってこのin_storage()は常に真
}
↑実際に一番よく使うのはコレ? |
|