Столбец SQL Server 2005 - ModifyDate - действительно ли использованием является Вычисляемый столбец корректный способ реализовать это?

Я просто хочу иметь столбец "ModifyDate", автоматически заполненный для меня, когда запись или вставляется или обновляется.

Я должен использовать триггеры или это в порядке для использования Вычисляемого столбца?

(Использование SSMS2005 и экспресса SQL Server 2005 года)

5
задан Brian Webster 15 January 2017 в 18:11
поделиться

3 ответа

Вставить часть просто - просто определите значение по умолчанию для этого столбца, а когда вы вставляете новую строку, не указывайте значение для этого столбца.

Часть UPDATE сложнее - вам нужно будет написать триггер , который срабатывает ON UPDATE , а затем обновляет этот столбец. Я не думаю, что в SQL Server есть другой способ сделать это.

Вопрос: действительно ли вам нужна актуальная календарная дата? Если нет, то если вы хотите иметь только «маркер», указывающий, изменилась ли строка или нет, вместо этого проверьте тип столбца ROWVERSION (ранее известный как TIMESTAMP ).

Я действительно не понимаю, как вы могли бы использовать для этого вычисляемый столбец - вам нужно где-то сохранить эту дату и поддерживать ее в актуальном состоянии с помощью INSERT и каждого последующего UPDATE - только триггер сможет это сделать.

5
ответ дан 13 December 2019 в 22:03
поделиться

Я бы предложил держаться подальше от триггеров и установить столбец Date Modified с помощью хранимой процедуры, используя серверную функцию getDate.

Пример:

Update Customers Set FirstName = 'Jim', LastName = 'Jones', DateModified = getDate()

3
ответ дан 13 December 2019 в 22:03
поделиться

Полагаю, вы имеете в виду ограничение по умолчанию вместо вычисляемого столбца.

Если так, то это нормально. Я предпочитаю делать это именно так. Один из возможных недостатков заключается в том, что клиент может отменить значение по умолчанию, но если вы не доверяете клиенту, вы можете обернуть доступ к таблице в хранимые процедуры.

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

2
ответ дан 13 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: