1. Perl
  2. モジュール
  3. データベース
  4. DBIx::Custom
  5. 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;

業務に役立つPerl

Perlテキスト処理のエッセンス

PerlでポータブルなLinuxファイル管理入門

ITエンジニアの求人情報など

 ITエンジニアの求人情報・Webサービス・ソフトウェア・スクールなどの情報。

システム開発のお問い合わせ