Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 向表中添加新列时,是否可以传递默认值的子查询?_Tsql_Sql Server 2005 - Fatal编程技术网

Tsql 向表中添加新列时,是否可以传递默认值的子查询?

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是唯一的,并且子查询返回单个值?如果是

如果我在现有表中添加一个非空的新列,是否可以传递一个t-sql子查询来提供该列的默认值?或者我只能在单独的语句中使用查询结果值更新新列

子查询如下所示

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)