我已经生成了一些代码在多个表中执行此操作。错误我这样做是:是否可以为多个表添加相同的约束?
变量不允许在ALTER TABLE语句。
我明白这一点。我生成的代码:
DECLARE
@tableName VARCHAR(50) = 'myTable',
@sql NVARCHAR(100),
@parameter1 CHAR(1) = 'A',
@parameter2 CHAR(2) = 'I'
SELECT @sql = N'ALTER TABLE '[email protected]+'
ADD CONSTRAINT CK_Status
CHECK (Status in (@parameter1, @parameter2))'
EXEC sp_executesql @sql,N'@parameter1CHAR(1), @parameter2 CHAR(1)',@parameter1,@parameter2
我知道这行不通。但是,我希望如果有可能以某种方式,因为我有很多表来应用这个。
注意: - 我有一个代码来获取表和名称以及所有东西,我只需要一些想法在字符串中添加char值。
考虑到您将检查值硬编码到变量中,为什么不直接将它们直接放入exec调用?如果值永不改变,则不需要使用变量。 'exec sp_executesql @sql,N'''char1(1),'I'char(1)etc ...' –