2012-01-18 9 views
1

投稿フォームをループした後、フォームによって更新されただけでなく、すべての行がデータベースから削除されます。MySQL:更新されていないすべての行を削除する

そのようなもののための優雅なMySQL宣言はありますか?

+1

1つのオプションは、トランザクション中にすべての行を先取りして削除し、フォームから「更新済み」行を挿入することです。 –

答えて

2

いいえPKを保管し、削除するにはNOT INを使用します。

0

テーブルにタイムスタンプ列を付けることができます。更新されるすべての行には現在のタイムスタンプがあります。テーブルを更新したときのおおよその時刻よりもタイムスタンプが小さいすべての行を選択して、削除クエリを実行することができます。しかし、完全な証明ソリューションではありません。

別では、更新、および後でその列の値が逆の状態について

+1

これを詳しく説明すると、intフィールドを持つことができます:更新し、UPDATEテーブルSET updated = 0; UPDATEテーブルセットnew_values = ""、updated = 1; DELETE FROMテーブルWHERE updated = 0; – dar7yl

0

どのように更新されませんでした行を削除しながら、いくつかの列の値を設定するだろうか?

更新tblはこれを=ここでcol = 'something'に設定します。 tblから削除するwhere col!= 'something';

0

手前での削除は危険です。ユーザーがブラウザを閉じるとどうなりますか?主キーの保存はオプションです。最後に、最も単純なのは次のとおりです。

1)一致するすべての行の日付をJan 1 1970のように設定します。 2)更新された行に現在時刻を含むフォームを送信します。 3)古い日付の行をすべて削除します。

非常にうまく動作します。

関連する問題