2013-12-03 19 views
0

Я использую SQL Server 2008 R2, и у меня есть атрибуты datetimes для нескольких баз данных. Это пример того, как они создаются.Как удалить значение столбца по умолчанию в SQL Server?

ALTER TABLE TripEvent ADD CompleteTime DATETIME DEFAULT '1899-12-31' ; 

Таким образом, столбец допускает нулевые значения, но значением по умолчанию является «1899-12-31». Я хочу изменить это из DBscript, поэтому значение по умолчанию равно NULL. Я нашел это blog. Итак, значение по умолчанию сохраняется в ограничении. Мой вопрос в том, как я могу удалить имя ограничения?

+1

В следующий раз, не забудьте назвать ограничение при добавлении его ('ALTER ... DATETIME ограничение DF_TripEvent_CompleteTime по умолчанию ...') –

ответ

0

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

Вы должны быть в состоянии найти ограничение, запустив этот запрос (при условии ДБО схемы, включенные в ИНЕКЕ только в случае, если это не так):

SELECT default_constraints.name 
FROM sys.all_columns 
     INNER JOIN sys.tables 
       ON all_columns.object_id = tables.object_id 
     INNER JOIN sys.schemas 
       ON tables.schema_id = schemas.schema_id 
     INNER JOIN sys.default_constraints 
       ON all_columns.default_object_id = default_constraints.object_id 
WHERE schemas.name = 'dbo' 
     AND tables.name = 'TripEvent' 
     AND all_columns.name = 'CompleteTime' 

Тогда вы должны быть в состоянии сделать:

ALTER TABLE TripEvent 
DROP CONSTRAINT <constraint name found above> 
0

Попробуйте это ..

SELECT def.name AS NameofConstraint,def.type_desc,col.name AS ColName FROM 
    sys.default_constraints def 
    INNER JOIN sys.all_columns col ON def.parent_object_id=OBJECT_ID('TripEvent') 
    AND col.name='CompleteTime' AND 
    col.default_object_id = def.OBJECT_ID 
0

Вы также можете попробовать этот запрос, чтобы получить сопзЬ по умолчанию raints.

select * from sysobjects o 
inner join syscolumns c 
on o.id = c.cdefault 
inner join sysobjects t 
on c.id = t.id 
where o.xtype = 'D' 
and c.name = 'Column_Name' 
and t.name = 'Table_Name' 
Смежные вопросы