web-dev-qa-db-ja.com

ソフト削除の実装

誰かがソフト削除を実装する方法を見せたり説明したりできますか?

これらのフィールドを持つバウチャーのテーブルがあります:idusernamepasswordserial

顧客の要求に応じて所定の数の行を表示したいのですが、一度表示したら、それらを削除して、再度表示されないようにする必要があります。 (すでに無効になっています。)

ソフト削除は、バウチャーが2回表示されないことを保証すると思います。私がそれをどのように行うかについて他のアイデアがあれば、私は感謝します。

6
Ruyonga Dan

私は常にSoft Deleteを実装しています。テーブルに2つの列を追加し、1つはステータス用、もう1つは削除日用です。

私のテーブル構造は次のようになります。

create table myTable
(
  id int,
  name varchar(50),
  IsDeleted bit,
  DeletedDate datetime
);

IsDeleted列のデフォルト値はnoで、行が実際に削除済みとしてマークされるまでDeletedDateは入力されません。行がいつ削除されたかを知りたいイベントに日付列を含めますソフト削除

次に、データをクエリするときに、この列をWHERE句に含めます。

select id, name
from myTable
where IsDeleted = 0

注:IsDeleted列にインデックスを含める必要があります。

10
Taryn

@ bluefeetの答えはあなたを助けるのに十分です。

ソフト削除は一般的な方法です。ソフト削除の長所と短所、およびその他の優れた情報を示すURLをいくつか確認してください。

https://stackoverflow.com/questions/2549839/are-soft-deletes-a-good-idea

https://stackoverflow.com/questions/378331/physical-or-logical-delete-of-database-record

3
Abdul Manaf