Лучший и простой способ запечатлеть время - PullRequest
1 голос
/ 03 августа 2011

Как я могу зафиксировать время, когда запись была добавлена ​​в базу данных - без особых усилий.Я использую это

create table YourTable
(
  Created datetime default getdate()
)

Любые другие альтернативы?

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Я думаю, что это канонический подход, у вас есть проблемы с ним?

Другие подходы заключаются в использовании триггера вставки, который, вероятно, медленнее и немного сложнее, поскольку код находится в двух местах. Или вы можете направить все обновления через SP, который также обновит поле Created - опять же, это немного сложнее и его легко обойти, если ваши разрешения не установлены тщательно.

1 голос
/ 03 августа 2011

По-прежнему в духе использования ограничения по умолчанию ... есть и другие значения, которые вы можете рассмотреть, - разные преимущества для каждого (включая универсальное время, точность и т. Д.).

http://msdn.microsoft.com/en-us/library/ms188383.aspx

Также - учитывайте размер вашего типа данных - datetime составляет 8 байтов - вы можете определить столбец как smalldatetime и увеличить его до 4 байтов (или в 2008 году просто обычную старую дату, которая составляет 3 байта - хотя вы может на самом деле тоже хотелось бы знать время).

Триггеры также являются опцией, но не предпочтительным IMO - во-первых, их можно откатить, если нарушены какие-либо ограничения (например, внешняя связь с таблицей, которую вы только что создали, забыв о триггере - упс! )

1 голос
/ 03 августа 2011

Параметры:

  1. КОЛОННА ПО УМОЛЧАНИЮ (как у вас)
  2. INSERT TRIGGER, который обновляет столбец до current_timestamp

Опция # 2 более надежна, поскольку она всегда обновляется с помощью GETDATE (). Использование опции # 1 позволяет пользователю вручную переопределить дату создания, указав ее в предложении INSERT.

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