sql-server - 添加具有先前选择的默认值的列

标签 sql-server t-sql

我得到的值是这样的:

select myValue from myTable where id=5

我想将 nvarchar 列添加到另一个表,其中默认值将是前一个表。

但我不知道如何存储这个先前的值以在我的添加列脚本中使用它:

IF NOT EXISTS(SELECT * FROM sys.columns WHERE [name] = N'NewColumn' AND [object_id] = OBJECT_ID(N'MySecondTable'))
BEGIN
   ALTER TABLE MySecondTable
   ADD    NewColumn nvarchar(250) NOT NULL DEFAULT 'my previous value'     
END
GO

预先感谢您的帮助!

最佳答案

动态 SQL 来救援:

DECLARE @defval NVARCHAR(500)=LEFT((SELECT myValue FROM myTable where id=5),250);
SET @defval=REPLACE(@defval,N'''',N''''''); -- double single quotes for dynamic SQL statements
DECLARE @stmt NVARCHAR(MAX)=N'
  IF NOT EXISTS(SELECT * FROM sys.columns WHERE [name]=N''NewColumn'' AND [object_id]=OBJECT_ID(N''MySecondTable''))
  BEGIN
    ALTER TABLE MySecondTable
    ADD NewColumn nvarchar(250) NOT NULL DEFAULT N'''+@defval+'''
  END;
';
EXECUTE sp_executesql @stmt;

关于sql-server - 添加具有先前选择的默认值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35336886/

相关文章:

SQL Server 游标

mysql - 在一个 SQL 查询中将记录的值替换为不同的值

SQL - 检索指定记录日期时间字段两侧 X 秒内出现的所有记录

mysql - SQL *= 语句(外连接)

Sql 通知支持的事务隔离级别

database - SQL 命令显示表是否设置为删除时级联

xml - 将 XML 文档转换为 SQL 中的表格数据集的有效方法,因为随着 xml 的增长,交叉应用 xml 查询的性能呈指数级下降

sql - 如何使用 SQL 查询根据条件获取下一条记录?

t-sql - 如何选择一个表中的所有行以及另一表中的任何匹配项(如果存在)?

sql-server - Azure SQL Server 中的临时表在存储过程中第二次插入时返回错误