Когда я вставить запись, dateCreated и dateModified получает значение по умолчанию дату/время. Когда я обновляю/изменяю запись , dateModified и dateCreated остается как есть? Что мне делать?
A Столбец по умолчанию используется только тогда, когда INSERT
ing, а не 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 ...
В ваших запросах обновления, почему бы вам просто не сбросить dateModified = GetDate()? – Aaron
Я хочу сделать его автоматическим ... – user311509