初めて、データベースを取り扱うプロジェクトに入ったのですが コードを見ると
selectして件数が1件以上ある事を確認してから、(同じ条件で)updateやdeleteをしています。
素人目にも、selectは無駄かと思うのですが、この業界では そのような習慣があるのでしょうか?
ちなみに、JAVAとSQL Serverを使用しています。
1件もないとき、エラーにしてエラー処理をしていますか?
エラーを出すために やってるということもあります。
ま、ないのにDeleteしてエラーでとまってしまうというものだったら
確認する必要があると思いますが、一概にそういうことをする必要はないと思われます。
つまりそのような習慣はないです。
そういうプロジェクトの経験ありです。
汎用機の時代からソフトウェアをやっているような大手では、ちょくちょくお目にかかる気がします。
SQL がない時代からのソフトウェアを途中で書き直した、とか、プロジェクトの上級SEの頭の中が、その時代で止まっちゃってるとか。
そういうところは、以下のような現象も、同時に見ることができます :-(
こちらの世界はこちらの世界で、色々あるのですね・・。
回答、ありがとうございました。
きちんと正規化されたRDBとして設計されているシステムであれば、そのような必要はありませんし、そのような習慣もありません。
正規化されておらず、updateやdeleteで複数レコードが更新/削除される可能性のあるシステムでは、いちいちselectでチェックをかけることがあります。
>updateやdeleteで複数レコードが更新/削除される可能性のあるシステムでは、いちいちselectでチェックをかけることがあります。
なるほど。一旦、確認の意味があれば 意味があるのかもしれませんね。
無いデータを処理することは、データのすべてを検索しなければ分かりません。
これはデータベースの件数が多ければ多いほど時間がかかります。
そこで、まず件数を調べて0件でない場合に処理をするのが得策です。当然ながら、インデックスにセレクト項目がなければ全件を探すことになりますが、頻度の多い処理であれば、インデックスは作成しておきますから、0件チェックの意味はありますね。
データベースの事を良くわかっていないから
なのかもしれないですが、update,deleteでもインデックスを利用するものだと
思っていましたが、違うのでしょうか??
SQLの動きってDBMSによって違うわよね。
今も使われているのかは知らないけどデータが無いのにupdateしたらエラーで止まるものがあるって聞いたことがあるわ。
selectやinsertしてからupdateしたりするのはそのためだって・・・。
昔からデータベース使ってる人の基本習慣ってことね。
あなたの使ってるSQLServerだけで動けばいいなら別にどうでもいいことだと思うけど先のことは判らないわよね?
習慣や慣習って大事だと思うわよ。
そうですよね・・・。そのような習慣は無いとの事で、安心しました。
2012/10/09 21:28:05ご回答、ありがとうございました!