【发布时间】:2009-03-18 19:05:20
【问题描述】:
我正在尝试将列 (MSSQL 2005) 添加到具有另一个表 (Department) 的主键的默认约束的表 (Employee) 中。然后,我要将此列设为该表的 FK。本质上,如果没有提供 DepartmentID,这将根据部门名称将新员工分配到基础部门。
这不起作用:
DECLARE @ErrorVar INT
DECLARE @DepartmentID INT
SELECT @DepartmentID = DepartmentID
FROM Department
WHERE RealName = 'RocketScience'
ALTER TABLE [Employee]
ADD [DepartmentID] INT NULL
CONSTRAINT [DepartmentIDOfAssociate] DEFAULT (@DepartmentIDAssociate)
SELECT @ErrorVar = @@Error
IF (@ErrorVar <> 0)
BEGIN
GOTO FATAL_EXIT
END
生产、测试和开发数据库已经不同步,DepartmentName = ‘RocketScience’ 的 DepartmentID 可能相同也可能不同,所以我不想只说 DEFAULT(某个数字)。无论我以哪种方式解决问题,我都会不断收到“ALTER TABLE 语句中不允许使用变量”。
正确的方法是什么?我也尝试过嵌套 select 语句,它得到“在这种情况下不允许子查询。只允许标量表达式。”
此外,我可以在一个语句中填充列值而不是执行
{ALTER null}
{更新值}
{ALTER not null}
步骤。我阅读了有关 WITH VALUES 命令的一些内容,但无法使其正常工作。
谢谢!!!
【问题讨论】:
标签: sql-server tsql default alter-table