Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl
  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;
Qiitaで
「3分間Perlテキストクッキング」
という連載を始めました。
テキスト処理を題材にして、3分くらいで読める分量で、書いていきます。
文字コード、テキストデータ、コンピュータにおけるテキストの扱いなど、ソフトウェアの基礎の話題も
3分間Perlテキストクッキング