- Perl ›
- モジュール ›
- データベース ›
- DBIx::Custom ›
- here
DBIx::Customの「delete」メソッドで行を「削除」する
テーブルの行を削除するにはdeleteメソッドを使用します。
$dbi->delete( table => 'book', where => {id => 1}, );
対象のテーブルをtableで指定します。削除する行の条件をwhereで指定します。whereにはハッシュリファレンスか、DBIx::Custom::Whereオブジェクトを指定することができます。
次のようなSQLが発行されます。
delete from book where id = ?;
対応する値がプレースホルダに埋め込まれます。
deleteメソッドのオプション
deleteメソッドは「executeメソッド」のすべてのオプションを使用することができます。また以下のオプションを実装しています。
IDによる条件の指定 id
idオプションを使用すれば、IDによって条件を指定することができます。primary_keyが設定されている必要があります。
id => 4 id => [4, 5]
以下のようなdeleteを実行するとします。
$dbi->delete( primary_key => ['id1', 'id2'], id => [4, 5], table => 'book', );
これは以下のdeleteと同じになります。
$dbi->delete(where => {id1 => 4, id2 => 5}, table => 'book');
プレフィックス prefix
deleteとfrom tableの間に文字列を設定するにはprefixオプションを使用します。
prefix => 'some'
たとえば以下のようなSQLが実行されます。
delete some from book
テーブル名 table
tableオプションでテーブル名を指定します。
table => 'book'
Where句 where
Where句を記述するにはwhereオプションを使用します。
where => {author => 'Ken', 'title' => 'Perl'} where => [ ['and', ':author{=}', ':title{like}'], {author => 'Ken', title => '%Perl%'} ]
whereオプションの指定方法については「selectメソッド」の「whereオプション」を見てください。Where句の生成の詳細については動的なWhere句の生成を見てください。
すべての行の削除 delete_all
テーブルのすべての行を削除するにはdelete_allメソッドを使用します。deleteメソッドでは安全のためすべての行を削除することができないので、delete_allメソッドを使用します。
$dbi->delete_all(table => 'book');
対象のテーブルをtableで指定します。
次のようなSQLが発行されます。
delete from book;