Я предпочитаю удалять запись из базы данных логически, а не физически. Лучше просто пометить запись флажком «удалена» или лучше использовать метку времени?
Например, мы можем добавить дополнительные поля DateTime
в каждую таблицу, которая нам нужна для выполнения логического удаления. Поэтому при удалении вы просто обновляете поле, например ...
UPDATE Client SET deleted = GETDATE() where Client.CID = @cid
Если его нужно восстановить ...
UPDATE Client SET deleted = NULL where Client.CID = @cid
Чтобы типичный оператор выбора выглядел так ...
SELECT * FROM client WHERE CID = @cid AND deleted IS NULL
Мое основное требование состоит в том, чтобы удаленные строки могли восстанавливаться и легко реализовывались.