2012-06-18 72 views
0

我想修改現有表中的一個整數字段從可爲空到不可爲空,並向它添加默認值。SQL Alter表默認錯誤

ALTER TABLE dbo.current_status 
ALTER COLUMN next_sign_id INT NOT NULL 

這種說法的作品,但是這一次沒有:

ALTER TABLE dbo.current_performance_status 
ALTER COLUMN next_sign_tp_id INT NOT NULL DEFAULT(0) 

這裏有什麼問題,我如何在一個聲明中同時實現?我正在使用sql 2008.

+0

'ALTER COLUMN'和'ADD constraint'是[互斥](http://msdn.microsoft.com/en-us/library/ms190273.aspx)在語法。 –

回答

2

您必須在三條語句中完成此操作(感謝@MartinSmith的完整性檢查,誰建議WITH VALUES在這種情況下不正確,但仍然提醒我該表可能不是空的) :

ALTER TABLE dbo.current_performance_status 
    ADD CONSTRAINT df DEFAULT (0) FOR next_sign_id; 

UPDATE dbo.current_performance_status 
SET next_sign_id = 0 
WHERE next_sign_id IS NULL 

ALTER TABLE dbo.current_performance_status 
    ALTER COLUMN next_sign_id INT NOT NULL; 
+0

聽起來不那麼驚訝。 :-) –