#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
. Возможно, вы не сможете выдать ошибку, если приложение предоставит значение, но, по крайней мере, вы сможете установить его правильно, пропустив столбец в вставке, который вы указываете в своем триггере.