select @tmp1='',@tmp2=''
select @tmp1=@tmp1+'['+引用的列名+'],', @tmp2=@tmp2+'['+已引用的列名+'],'
from #t where 外键名称=@name insert into #tmp
select top 1 'ALTER TABLE [DBO].['+表名称+'] ADD CONSTRAINT ['+@name+'] FOREIGN KEY ( '+left(@tmp1,len(@tmp1)-1)+' ) REFERENCES ['+引用的表名+'] ( '+left(@tmp2,len(@tmp2)-1)+' )'
from #t where 外键名称=@name
不太明白这段select的作用求助各位大虾
select @tmp1=@tmp1+'['+引用的列名+'],', @tmp2=@tmp2+'['+已引用的列名+'],'
from #t where 外键名称=@name insert into #tmp
select top 1 'ALTER TABLE [DBO].['+表名称+'] ADD CONSTRAINT ['+@name+'] FOREIGN KEY ( '+left(@tmp1,len(@tmp1)-1)+' ) REFERENCES ['+引用的表名+'] ( '+left(@tmp2,len(@tmp2)-1)+' )'
from #t where 外键名称=@name
不太明白这段select的作用求助各位大虾
select top 1 'ALTER TABLE [DBO].['+表名称+'] ADD CONSTRAINT ['+@name+'] FOREIGN KEY ( '+left(@tmp1,len(@tmp1)-1)+' ) REFERENCES ['+引用的表名+'] ( '+left(@tmp2,len(@tmp2)-1)+' )'
from #t
where 外键名称=@name这样能理解么?
alter table [dbo].[tablename] add constraint [fk_name] foreign key(外键列名称) references [reftablename](引用外键列名称);
第一个select给@tmp1,@tmp初始化为空字符串
第二个select给@tmp1赋值外键字段名, @tmp2引用表的字段名
第三个select拼接字符串,创建名为@name的外键约束语句