Мы DEFAULT на CreatedDate и не применять с триггерами
Есть моменты, когда мы хотим, чтобы установить дату в явном виде - например, если мы импортируем данные из другого источника.
Существует риск того, что ошибка приложения может связываться с CreateDate или раздраженной DBA по этому вопросу (мы не имеем, не АБД подключения непосредственно к нашей БД)
Я полагаю, вы могли бы установить столбцы уровня для CreateDate.
Поврежденный дом может состоять в том, чтобы INSERT TRIGGER создать строку в таблице 1: 1, чтобы столбец находился за пределами основной таблицы. Во второй таблице могут быть разрешения SELECT, где главная таблица имеет разрешения UPDATE и, следовательно, не требуется триггер UPDATE, чтобы предотвратить изменения в CreateDate - что приведет к удалению некоторого «веса» при нормальном обновлении строк.
Я полагаю, вы Коула есть UPDATE/DELETE триггер на второй таблицы для предотвращения изменения (которые никогда не будут выполняться в обычных условиях, так что «легкий»)
Немного боли иметь дополнительную таблицу, хотя ... может иметь одну таблицу для всех CreateDates - TableName, PK, CreateDate.Большинство архитекторов баз данных будут ненавидеть это, хотя ...
Помните, что это можно обойти пользователями, поскольку значение по умолчанию не учитывается при вставке фактического значения. И он также может быть обновлен пользователями. Вероятно, это достаточно хорошо, если вы можете контролировать, какой SQL запускается (и вы не можете :-), но это не безопасно. – paxdiablo
Это на самом деле хорошо, потому что, если у пользователя есть конкретная дата, которую им нужно положить туда, это, вероятно, должно быть разрешено, если у вас нет правил, которые управляют иначе. – James
С уважением не согласен, @James. Вы не слышали о Сарбейнсе-Оксли? :-) Если у вас есть столбец DateCreated, он должен быть установлен в дату создания строки. Если вы хотите использовать изменяемый пользователем столбец, его следует называть DateCreatedForPurposesOfFraud или что-то подобное. – paxdiablo