Учтите, что если вы на самом деле не удаляете записи, а добавляете поле, чтобы пометить их как удаленные, вы можете получить пользователя из последнего изменения.Если вы действительно хотите удалить записи, у вас может быть ночное задание, которое удаляет в пакете не по одному за раз.Это может быть даже установлено, чтобы помечать, если слишком много записей удаляются и не запускаются.
Самый простой способ сделать это, чтобы ничего не сломалось, это переименовать таблицу, добавить столбец IsDeleted как битовое поле изатем создайте представление с тем же именем, которое первоначально называлось таблицей.Представление выберет все записи, для которых isdelted имеет значение null.
Не позволяйте никому отговаривать вас от использования триггеров для этого.Вы не хотите, чтобы люди, которые делают несанкционированные изменения, могли избежать аудита.С триггером (и никакими правами ни на кого, кроме производственного dba, каким-либо образом изменять таблицу), никто, кроме dba, не может удалить без проверки.В типичной системе без хранимых процедур, ограничивающих прямой доступ к таблице, слишком много людей обычно могут напрямую влиять на таблицу, открывая ее широко для мошенничества.Люди, совершающие мошенничество, обычно не используют приложение, которое они должны использовать для изменения данных.Вы должны защищать данные на уровне базы данных.
Когда вы пишете свои триггеры, убедитесь, что они могут обрабатывать многострочные вставки / обновления / удаления.Триггеры работают со всем набором данных, а не по одной строке за раз.