2012-01-06 10 views
1

Мне нужно изменить значение по умолчанию для столбца в существующей таблице.SQL Server - значение по умолчанию для столбца

Я предположил (и я действительно нашел несколько примеров в сети «подтверждающую» это), что я мог бы сделать ALTER TABLE таблицы ALTER COLUMN COLUMN SET DEFAULT «что-то», но я получаю ошибку синтаксиса и в соответствии с этим http://msdn.microsoft.com/en-us/library/ms190273.aspx УМОЛЧА не поддерживается.

Следующая идея состояла в том, чтобы удалить ограничение по умолчанию из базы данных, но я обнаружил, что при создании таблицы ограничение не было названо, а SQL генерирует случайное имя при каждом развертывании, поэтому я не могу ссылаться на него по имени.

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

select o.name from sys.objects o 
join sys.columns c on o.object_id = c.default_object_id 
join sys.tables t on c.object_id = t.object_id 
where t.name='TableName' and c.name='ColumnWithDefValue' 

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

TL; DR версия: что является самым простым способом изменить ограничение по умолчанию для столбца в SQL Server R2?

Благодаря

+0

Ссылка скопированная ссылка на SQL Compact версии, я использую полный SQL. Ошибка, которую я получаю, это Синтаксическая ошибка в SET (или DEFAULT, если я опускаю ключевое слово SET) –

+1

Я ударил это тоже один раз за раз (именно поэтому я всегда называю мои ограничения). Я сделал то, что вы делаете, вытащите системное имя, создайте динамический код, чтобы его удалить, затем заново создайте его со стандартным именем (я использую DF_TableName__ColumnName). –

ответ

1

Похоже, вы должны отбросить ограничения, а затем воссоздать его

http://bypsoft.blogspot.com/2007/10/changing-default-column-values-sql.html

+0

Правильно, я видел это, но проблема в том, что я не знаю имя ограничения, поэтому я не могу так легко его отбросить. –

+0

SELECT * FROM sys.default_constraints WHERE parent_object_id = OBJECT_ID ('TableName') – msmucker0527

+0

@ msmucher0527: этот запрос возвращает все ограничения по умолчанию для таблицы, которые мне все еще нужно ограничить на один столбец, но спасибо, это еще одно объединение в моем запросе ... –

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