Когда я вставляю запись, dateCreated
и dateModified устанавливается по умолчанию
дата / время. Когда я обновляю / изменяю
запись, дата изменения и дата создания
остается как есть? Что мне делать?
Столбец по умолчанию используется только при INSERT
, а не UPDATE
. По умолчанию будет использоваться команда INSERT, если вы не предоставите столбец или не введете ключевое слово DEFAULT
в INSERT.
INSERT INTO Customer (col1, col2)
VALUES (..,..) ---get default for dateCreated & dateModified
INSERT INTO Customer (col1, col2,dateCreated)
VALUES (..,..,DEFAULT) ---get default for dateCreated & dateModified
INSERT INTO Customer (col1, col2,dateCreated,dateModified)
VALUES (..,..,DEFAULT,DEFAULT) ---get default for dateCreated & dateModified
INSERT INTO Customer (col1, col2,dateCreated,dateModified)
VALUES (..,..,'1/1/2010',DEFAULT) ---only get default for dateModified
INSERT INTO Customer (col1, col2,dateCreated,)
VALUES (..,..,'1/1/2010') ---only get default for dateModified
INSERT INTO Customer (col1, col2,dateCreated,dateModified)
VALUES (..,..,'1/1/2010','1/2/2010') ---no defaults for dateCreated & dateModifie
Мне нравится использовать локальную переменную, установленную в начале процедуры:
DECLARE @RunDate datetime
SET @RunDate=GETDATE()
Затем я использую это в процедуре, поэтому все изменения (даже в нескольких таблицах) имеют одинаковую дату с точностью до миллисекунды. Я также предпочитаю, чтобы столбец dateModified допускал значения NULL и не имел значения по умолчанию. Когда он вставляется, он создается без изменений, я устанавливаю dateModified, когда он фактически изменяется.
затем используйте:
UPDATE Customer
SET importantColumn=
,dateModified = @RunDate
WHERE ...
UPDATE CustomerPrice
SET importantColumn=
,dateModified = @RunDate
WHERE ...