人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

データベースの話ですが、削除や更新をする前に selectで該当レコードがあるかどうかの確認をするという習慣のようなものはあるでしょうか?
初めて、データベースを取り扱うプロジェクトに入ったのですが コードを見ると
selectして件数が1件以上ある事を確認してから、(同じ条件で)updateやdeleteをしています。
素人目にも、selectは無駄かと思うのですが、この業界では そのような習慣があるのでしょうか?
ちなみに、JAVAとSQL Serverを使用しています。

●質問者: office55
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● きゃづみぃ
●25ポイント

1件もないとき、エラーにしてエラー処理をしていますか?

エラーを出すために やってるということもあります。

ま、ないのにDeleteしてエラーでとまってしまうというものだったら
確認する必要があると思いますが、一概にそういうことをする必要はないと思われます。

つまりそのような習慣はないです。


office55さんのコメント
そうですよね・・・。そのような習慣は無いとの事で、安心しました。 ご回答、ありがとうございました!

2 ● a-kuma3
●25ポイント

そういうプロジェクトの経験ありです。

汎用機の時代からソフトウェアをやっているような大手では、ちょくちょくお目にかかる気がします。
SQL がない時代からのソフトウェアを途中で書き直した、とか、プロジェクトの上級SEの頭の中が、その時代で止まっちゃってるとか。

そういうところは、以下のような現象も、同時に見ることができます :-(


office55さんのコメント
こちらの世界はこちらの世界で、色々あるのですね・・。 回答、ありがとうございました。

3 ● oil999
●25ポイント

きちんと正規化されたRDBとして設計されているシステムであれば、そのような必要はありませんし、そのような習慣もありません。

正規化されておらず、updateやdeleteで複数レコードが更新/削除される可能性のあるシステムでは、いちいちselectでチェックをかけることがあります。


office55さんのコメント
>updateやdeleteで複数レコードが更新/削除される可能性のあるシステムでは、いちいちselectでチェックをかけることがあります。 なるほど。一旦、確認の意味があれば 意味があるのかもしれませんね。

4 ● 無頼庵
●25ポイント

無いデータを処理することは、データのすべてを検索しなければ分かりません。
これはデータベースの件数が多ければ多いほど時間がかかります。
そこで、まず件数を調べて0件でない場合に処理をするのが得策です。当然ながら、インデックスにセレクト項目がなければ全件を探すことになりますが、頻度の多い処理であれば、インデックスは作成しておきますから、0件チェックの意味はありますね。


office55さんのコメント
データベースの事を良くわかっていないから なのかもしれないですが、update,deleteでもインデックスを利用するものだと 思っていましたが、違うのでしょうか??

5 ● 井戸端さん
●0ポイント

SQLの動きってDBMSによって違うわよね。

今も使われているのかは知らないけどデータが無いのにupdateしたらエラーで止まるものがあるって聞いたことがあるわ。

selectやinsertしてからupdateしたりするのはそのためだって・・・。

昔からデータベース使ってる人の基本習慣ってことね。

あなたの使ってるSQLServerだけで動けばいいなら別にどうでもいいことだと思うけど先のことは判らないわよね?

習慣や慣習って大事だと思うわよ。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ