【问题标题】:Is it possible to pass a sub-query for the Default Value when adding a new column to a table?向表中添加新列时是否可以传递默认值的子查询?
【发布时间】:2015-01-08 04:42:47
【问题描述】:
ALTER TABLE TABLENAME 
ADD New_Col3 INT NOT NULL
CONSTRAINT CONSTRAINT_1 DEFAULT {DEFAULT_VALUE}

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

子查询如下所示

 SELECT ID FROM dbo.Category WHERE CategoryName = N'Default Category'

【问题讨论】:

  • 我们可以假设CategoryName 是唯一的并且子查询返回单个值吗?如果是这样,默认的 UDF 怎么样?
  • @DMason 是 CategoryName 是唯一的,是的,子查询返回一个整数值。

标签: tsql sql-server-2005


【解决方案1】:

我想你可以为我们澄清一下你在做什么。我糊涂了。我能想到的就这些了……

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)

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多