2012-06-18 71 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

听起来不那么惊讶。 :-) –