Имя столбца SQL для указания изменения - PullRequest
0 голосов
/ 03 марта 2009

Я действительно не знал, как сформулировать название. Но это моя проблема. Мы используем SqlCacheDependencies для обновления объектов кэша. Но вопрос, стоящий за этим, «сложен», и мы хотели бы сделать его несколько проще.

Нашей первой мыслью было добавить имя поля, например DateChanged, и использовать DateChanged, чтобы проверить, действительно ли объект изменился вместо загрузки всех столбцов таблицы.

SELECT DateChanged FROM Table1

вместо

SELECT Id, Title, DateChanged, Description FROM Table1

Но я надеялся, что кто-нибудь скажет мне, есть ли другие способы сделать это или есть стандарты для именования столбца, который указывает на изменение. Как фреймворки, такие как Entity Framework или NHibernate, справляются с этим?

Ответы [ 3 ]

1 голос
/ 03 марта 2009

Вот столбцы, которые я использую для "проверяемых" объектов:

version: hibernate's optimistic concurrency control
createdBy: FK to users
modifiedBy: FK to users
createdAt: timestamp
modifiedAt: timestamp
1 голос
/ 03 марта 2009

Обычно это называется "отметка времени"

т.е. в

0 голосов
/ 03 марта 2009

Если вы используете SQL Server, имейте в виду, что столбец метки времени несколько неверно назван. Хотя его можно использовать для отслеживания изменений в столбце, его значение не имеет ничего общего с датой или временем. Его можно рассматривать как уникальный идентификатор в базе данных, не более того. http://msdn.microsoft.com/en-us/library/aa260631.aspx

Чтобы узнать, произошло ли изменение, вам нужны две метки, как в ответе черувима. Один устанавливается при создании объекта, другой - при любой модификации, возможно, с помощью триггера обновления. Если они различаются, объект был отредактирован, но вы не можете точно сказать, когда.

В SQL Server вы должны использовать тот же шаблон, но со столбцами даты и времени. Затем вы можете рассчитать дату строки, вычитая дату создания из даты мода.

...