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
Post a Comment