Отключение операций ВСТАВКИ в столбцах значений по умолчанию — SQL Server

#sql #sql-server #insert #constraints

#sql #sql-server #вставить #ограничения

Вопрос:

В Sql Server 2008 у меня есть таблица, которая заполняется приложением поставщика данных.

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

Чтобы сделать это, я определил ограничение по умолчанию для столбца INSERT_DATE, которое по умолчанию устанавливает GETDATE() .

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

Итак, как я могу отключить вставку в столбец INSERT_DATE?

(Я не могу использовать вычисляемый столбец. Поскольку кластеризованный индекс использует поле INSERT_DATE)

Ответ №1:

Вы могли бы использовать триггер After Insert . Таким образом, все, что вставлено в этот столбец для вставленной строки, вы можете обновить до текущей даты / времени.

Ответ №2:

Вероятно, вы также не хотите, чтобы столбец обновлялся при последующем обновлении строки.

Лучше всего использовать a trigger . Возможно, вы не сможете выдать ошибку, если приложение предоставит значение, но, по крайней мере, вы сможете установить его правильно, пропустив столбец в вставке, который вы указываете в своем триггере.