我已經生成了一些代碼在多個表中執行此操作。錯誤我這樣做是:是否可以爲多個表添加相同的約束?
變量不允許在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 ...' –