条件に合ったデータを対象にデータ項目の値を変更する命令として、SQLにはupdateという命令があります。
データベースegiのテーブルmeiboにあるデータを変更する例を次に示します。
【使用するSQL文】 update meibo set tel='111-111-1111' where tel='0836-111-1111' |
【プログラム例】 #!/usr/bin/perl use DBI; $dbh = DBI->connect("dbi:Pg:dbname=egi",'','') or die "Cannot connect: " , $DBI::errstr; $sth = $dbh->prepare("update meibo set tel = ? where tel = ?" ) or die "Cannot prepare: " , $dbh->errstr(); $sth->execute( '111-111-1111', '0836-111-1111' ) or die "Cannot execute: " , $sth->errstr(); |
【プログラム実行結果】 [egi@myouga]$ perl cgirei_upd.pl [egi@myouga]$ psql Welcome to the POSTGRESQL interactive sql monitor: Please read the file COPYRIGHT for copyright terms of POSTGRESQL type \? for help on slash commands type \q to quit type \g or terminate with semicolon to execute query You are currently connected to the database: egi egi=> select * from meibo; namae |toshi|addre | tel ----------+-----+------------+------------- ハル | 2|宇部市 | 0836-88-8888 ミミ | 2|宇部市 | 0836-33-3333 ポチ | 10|山口市 | 0839-66-6666 クー| 4|宇部市| 0836-99-9999 サチ| 3|下関市| 0832-77-7777 タロ | 44|小野田 |0836-111-1111 (6 rows) egi=> |
【備考】
上記のプログラムでは、検索条件と変更値の2箇所でプレースホルダー機能が使われている。このような場合は、実行命令で、次のように出現順に , で区切って値を設定する。 $sth->execute( '111-111-1111', '0836-111-1111' )すると?の箇所は、実行時(execute)時に、?の出現順に値を置き換えてくれる。 【注意事項】
|