sql - Is It possible to add same constraint to multiple tables? -


i have generated code in multiple tables. error doing is:

variables not allowed in alter table statement.

i understand that. code i've generated :

declare @tablename varchar(50) = 'mytable', @sql nvarchar(100), @parameter1 char(1) = 'a', @parameter2 char(2) = 'i'  select @sql = n'alter table '+@tablename+'                add constraint ck_status                check (status in (@parameter1, @parameter2))' exec sp_executesql @sql,n'@parameter1char(1), @parameter2 char(1)',@parameter1,@parameter2 

i know doesn't work. i'd if possible in way, because have lot of tables apply this.

note: - have code tables , names , everything, need idea add char values in string.

you can add same constraint, not same name. simple way leave name out. and, put parameters directly in query:

declare     @tablename varchar(50) = 'mytable',     @sql nvarchar(100),     @parameter1 char(1) = 'a',     @parameter2 char(2) = 'i';  select @sql = n'alter table @tablename                add constraint check (status in (''@parameter1'', ''@parameter2''))';  set @sql = replace(@sql, '@tablename', @tablename); set @sql = replace(@sql, '@parameter1', @parameter1); set @sql = replace(@sql, '@parameter2', @parameter2);  exec sp_executesql @sql; 

if have deal constraint in many tables, might consider having table valid values of status , using foreign key constraint instead.


Comments