0

我正在尝试将现有表上的整数字段从可空修改为不可空,并为其添加默认值。

    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。

4

1 回答 1

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;
于 2012-06-18T19:02:52.877 回答