2010-06-28 7 views
3

Я пытаюсь сбросить значение по умолчанию в столбце бит, я установил его неправильно, и я хочу сделать это снова правильно. Однако, когда я пишу:sql server drop default синтаксическая ошибка

ALTER TABLE Person 
ALTER COLUMN tsHomePref DROP DEFAULT; 

Я получаю «неправильный синтаксис около ключевого слова ошибки по умолчанию», и я не знаю, почему

Я хочу бросить столбец, а затем построить его снова

ALTER TABLE Person 
ADD COLUMN tsHomePref bit NOT NULL DEFAULT 0; 

Итак, почему он не позволит мне «сбросить» значение по умолчанию?

Благодаря Р.

+0

Возможный дубликат [Как удалить значение по умолчанию или подобное ограничение в T-SQL?] (Http://stackoverflow.com/questions/1123060/how-do-you-drop-a-default-value- или-like-constraint-in-t-sql) –

ответ

4

Вы должны были бы сделать

ALTER TABLE Person 
    DROP CONSTRAINT DF__Person__tsHomePr__05BA7BDB 

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

+0

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

2

Если вы не знаете имя ограничения (так как я не знаю, сегодня при поиске решения той же задачи), вы можете использовать следующие для MS SQLServer:

DECLARE @defname VARCHAR(100), @cmd VARCHAR(1000) 
SET @defname = 
    (SELECT name FROM sysobjects so 
    JOIN sysconstraints sc ON so.id = sc.constid 
    WHERE object_name(so.parent_obj) = 'TableName' 
    AND sc.colid = 
     (SELECT colid FROM syscolumns WHERE id = object_id('dbo.TableName') AND name = 'FieldName')) 
    SET @cmd = 'ALTER TABLE TableName DROP CONSTRAINT ' + @defname 
    EXEC(@cmd) 
GO 

Это сработало в моем случае. Надеюсь, это поможет и другим.

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