Логическое удаление с отметкой времени

Я предпочитаю удалять запись из базы данных логически, а не физически. Лучше просто пометить запись флажком «удалена» или лучше использовать метку времени?

Например, мы можем добавить дополнительные поля 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

Мое основное требование состоит в том, чтобы удаленные строки могли восстанавливаться и легко реализовывались.


person CAD    schedule 31.07.2014    source источник
comment
Я бы просто использовал флаг, но вопрос сводится к мнениям.   -  person Damien_The_Unbeliever    schedule 31.07.2014


Ответы (1)


Обычно используется столбец с таким именем, как «DeletedAt» или «DeletionDate» типа «дата», чтобы указать, была ли удалена строка. Так что ответ - да.

person kristianp    schedule 31.07.2014