我得到的值是这样的:
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/