- PR -

検索、削除の一般的手法を教えてください。

1
投稿者投稿内容
toto
会議室デビュー日: 2005/09/15
投稿数: 6
投稿日時: 2006-08-18 17:14
SQL初心者です。
テーブルAから不要なレコード検索しテーブルAからそのレコードを削除したいのですが
一般的な手法を教えていただけないでしょうか。
(一度検索するのは確認のため)

環境
OS windows XP
開発言語 VB6
database mysql

今はこのようにしています。

'データベースを開く
Dim abc As New ADODB.Connection
Dim record As New ADODB.Recordset
abc.ConnectionString = -----------
abc.Open

'不要なレコード抽出

sql=select ------------
Set record = abc .Execute(sql)

Do Until record .EOF
名前(配列)=record!名前
loop
imax=配列の最大

for i=0 to imax
'delet
sql=delete ---------- where名前=名前(i)
next i



配列処理は無駄のように思えるのですが一般的にどのようにされているのでしょうか。
一度DBを閉じ、再度開かれているのでしょうか。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2006-08-18 17:52
selectで取れたものを全部削除なら・・・
selectのwhere句をdeleteのwhere句にすればどうです?

後、ここはJavaです
toto
会議室デビュー日: 2005/09/15
投稿数: 6
投稿日時: 2006-08-18 17:59
すみませんJavaとはきずきませんでした。
ファイルにdeleteの履歴をつくらないといけないので
一度selectして抽出したものを書き込みたかったのです。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-08-19 13:28
DB製品にもよるでしょうし一般的にどうなるかはよくわかりませんが…。
SELECT FOR UPDATE で行単位でロックを掛けて
該当行をDELETEするようにしないとマルチスレッド下で
バグが発生するんじゃないかなぁ。

SELECTした後、DELETEする前のタイミングで
他のスレッドがINSERTとかしていると…。
DB板にいけば詳しい方の話をきけるのではないでしょうか。
(どういう理由で板を間違えたのかが気になる…)
toto
会議室デビュー日: 2005/09/15
投稿数: 6
投稿日時: 2006-08-19 13:48
すみません。
DB板で質問してみます。
1

スキルアップ/キャリアアップ(JOB@IT)