我正在尝试将现有表上的Integer字段从nullable修改为不可为空,并为其添加默认值。
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 :(得分: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;