誰かがソフト削除を実装する方法を見せたり説明したりできますか?
これらのフィールドを持つバウチャーのテーブルがあります:id
、username
、password
、serial
。
顧客の要求に応じて所定の数の行を表示したいのですが、一度表示したら、それらを削除して、再度表示されないようにする必要があります。 (すでに無効になっています。)
ソフト削除は、バウチャーが2回表示されないことを保証すると思います。私がそれをどのように行うかについて他のアイデアがあれば、私は感謝します。
私は常に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
列にインデックスを含める必要があります。
@ 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