2014-07-18 3 views

ответ

0
ALTER TABLE [table] ADD [CreationTimeStampUTC] DATETIME DEFAULT(GETUTCDATE()) 

Или вы могли бы сделать то же самое с GETDATE(), который я думаю, что я видел больше в реальном коде. Обратите внимание, конечно, что GETDATE() будет оцениваться с текущим временем сервера SQL Server и может совпадать с текущим временем веб-сервера, если он у вас есть, или, в частности, на машине клиента. Очевидно, что с этим нет никаких проблем, просто убедитесь, что вы заранее знаете о последствиях. Вы также можете сохранить эту временную метку как DATETIMEOFFSET, чтобы избавиться от некоторых из этих проблем, но поскольку вы говорите явно о значениях по умолчанию на сервере, я думаю, что UTC вполне достаточен.

+0

FYI, SQL Server поддерживает значения по умолчанию, отличные от констант. – DMason

+0

@DMason О, эй, ты прав. Даже лучше. Благодарю. Я никогда не читал определение документации «постоянное выражение», поэтому я не знал, что они подсчитали системные функции. Узнавайте что-то новое каждый день. Я отрегулирую свой ответ. Еще раз спасибо. –

+0

По умолчанию метка времени, я имею в виду текущее время, в которое вставлена ​​строка. Мне нужна текущая временная метка. – Rahul

2

ALTER TABLE table_name ADD InsertTime DATETIME DEFAULT GETDATE()

+0

Я пробовал это. Но я получаю «Не могу вставить явное значение для столбца идентификации в таблицу« Users_Master », когда IDENTITY_INSERT установлен в OFF». – Rahul

+0

@Rahul odd .. можете ли вы опубликовать определение схемы? – Akash

+0

и точная заявка, которую вы выполнили. – Akash

0

Что вы ищете, это ограничение по умолчанию. Как вы его добавите, зависит от того, существует ли столбец или нет. Если нет, то вы можете добавить столбец и ограничение в одном кадре, как так:

alter table dbo.yourTable 
    add [NewColumn] datetime 
    constraint [DF_NewColumn] default (getdate()); 

Если столбец уже существует, вы можете прикрепить к нему по умолчанию так:

alter table dbo.yourTable 
    add constraint [DF_ExistingColumn] default (getdate()) for [ExistingColumn]; 

Наконец, если таблица еще не существует, вы можете добавить ограничение для определения таблицы:

create table dbo.yourTable (
    NewColumn datetime not null constraint [DF_NewColumn] default (getdate()) 
) 

Примечание: во всех случаях, я дал ограничение имя. Вы можете отказаться от этого, но тогда вы, в конечном итоге, получите худшего администратора базы данных, чтобы узнать, почему ее сравнение с базами данных беспорядок, потому что имена ограничений не совпадают между dev и prod. :)

Смежные вопросы