Tsql 向表中添加新列时,是否可以传递默认值的子查询?
如果我在现有表中添加一个非空的新列,是否可以传递一个t-sql子查询来提供该列的默认值?或者我只能在单独的语句中使用查询结果值更新新列 子查询如下所示Tsql 向表中添加新列时,是否可以传递默认值的子查询?,tsql,sql-server-2005,Tsql,Sql Server 2005,如果我在现有表中添加一个非空的新列,是否可以传递一个t-sql子查询来提供该列的默认值?或者我只能在单独的语句中使用查询结果值更新新列 子查询如下所示 ALTER TABLE TABLENAME ADD New_Col3 INT NOT NULL CONSTRAINT CONSTRAINT_1 DEFAULT {DEFAULT_VALUE} 我想你可以为我们解释一下你在做什么。我很困惑。这就是我所能想到的。。。 我们是否可以假设CategoryName是唯一的,并且子查询返回单个值?如果是
ALTER TABLE TABLENAME
ADD New_Col3 INT NOT NULL
CONSTRAINT CONSTRAINT_1 DEFAULT {DEFAULT_VALUE}
我想你可以为我们解释一下你在做什么。我很困惑。这就是我所能想到的。。。
我们是否可以假设
CategoryName
是唯一的,并且子查询返回单个值?如果是,那么默认的UDF如何?@DMason yes CategoryName是唯一的,并且yes子查询返回单个整数值。
SELECT ID FROM dbo.Category WHERE CategoryName = N'Default Category'
DECLARE @sqlstring varchar(max)=''
,@defaultValue varchar(10)='8'
SET @sqlstring=
'ALTER TABLE TABLENAME ADD New_Col8 INT NOT NULL
CONSTRAINT CONSTRAINT_8 DEFAULT (' + (SELECT TOP 1 CAST(number as varchar(2)) FROM
master..spt_values WHERE number=@defaultValue) + ')'
PRINT @sqlstring
EXEC (@sqlstring)