Как отслеживать, когда строка была создана / обновлена ​​автоматически в SQL Server? - PullRequest
6 голосов
/ 03 декабря 2010

Есть ли способ автоматически сообщить SQL Server, что все таблицы должны иметь метку времени для вставки и обновления?

Это, наверное, много повторяющихся работ, чтобы сделать это?

Или есть другой / более эффективный способ сделать это с журналом транзакций?

Ответы [ 3 ]

6 голосов
/ 03 декабря 2010

Вы можете иметь RowCreated DATETIME DEFAULT (GETDATE()) для обработки даты, когда строка была изначально создана автоматически, но нет ничего, кроме написания триггера, который сделает то же самое для столбца RowModified DATETIME.

Для каждой таблицывам нужно написать триггер AFTER UPDATE для обработки столбца RowModified примерно так:

CREATE TRIGGER dbo.trg_YourTableUpdated
ON dbo.YourTable AFTER UPDATE
AS BEGIN
    UPDATE dbo.YourTable
    SET RowModified = GETDATE()
    FROM INSERTED i
    WHERE dbo.YourTable.ID = i.ID
END
4 голосов
/ 03 декабря 2010

Посмотрите на АвтоАудит

Это добавит столбцы в таблицу и создаст триггеры DML для управления этими столбцами, а также для ведения таблицы контрольного журнала

Я нашел это очень полезным

Конечно, можно использовать триггеры DDL, чтобы попытаться навязать проблемы проектирования таблиц. Также возможно автоматизировать проверку метаданных на запахи дизайна

2 голосов
/ 03 декабря 2010

Вам придется реализовать это с помощью триггеров DML в SQL Server, для вставки, которую вы можете избежать с помощью defaults, но если кто-то передаст значение, оно будет перезаписано default

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...