INSERT or UPDATE ?
今日は珍しく、TIPSの紹介。
table1 ( code(PK) , value );
このようなテーブル(もちろん関連テーブルも存在する)があるとします。
field1が外部の主キーを参考にしているケース。
付加的な情報を格納する場合や、対照表や対応表を処理する場合を想定すると、よくこういうコードをみます。
$sql = "select count(*) from table1 where code = 'a01'";
:
結果を取得して、存在チェック(当然他の方法でチェックしてもよい)
:
if( 存在すれば ){
$sql = "update table1 set value = 'bb' where code = 'a01'";
} else {
$sql = "insert into table1 values ('a01','bb')";
}
:
この後実行処理に入る。
まあ、動作チェックはしてないのですが、ニュアンスはわかるでしょう。
これは、以下の一行でOKです。
sql = "replace into table1 ('a01','bb')";
便利なフレームワーク等が多々あるとはいえ、社内未検証、サーバー環境依存などで利用できない案件も多々あるのは事実。
小さな案件ではこういう小技はうまく活用して、コードの省力化を行っていきましょう。
(もちろんケースバイケースで!将来的に他のDBに置き換えが想定される場合は、つかわない方がよいでしょう。)
PEAR::DBのautoPrepareと併用できれ0さらにば楽なんだけどなぁ。。。