Я использую следующий запрос для вставки в соответствующую хронологическую таблицу изменений, произошедших в данной таблице. Я выполняю один и тот же запрос одновременно для нескольких таблиц в Python (смена имени таблицы и базы данных). Ни одна из исторических таблиц не имеет внешних ключей. Но некоторые из казней зашли в тупик. Каждой таблице назначают уникальную историческую таблицу. Я не уверен, как решить проблему. Это потому, что я использую таблицу переменных с одинаковыми именами во всех процедурах?
declare @name_tab table (name_column varchar(200),
dtype varchar(200))
declare @columns varchar(max)
declare @query varchar(max)
declare @database varchar(200)
declare @table_name varchar(200)
set @database = '%s'
set @table_name = '%s'
insert into @name_tab
select c.name as name_column,
t.name as dtype
from sys.all_columns c
INNER JOIN sys.types t
ON t.system_type_id = c.system_type_id
where OBJECT_NAME(c.object_id) = @table_name
set @columns= stuff((select ','+name_column from @name_tab FOR XML PATH('')),1, 1, '')
set @query= 'insert into ' +@database+'..'+'HISTORY_'+@table_name+' select super_q.* from' +
'(select cast (GETDATE() as smalldatetime) as TIME_MODIFIED, new_info.* from '+
'(SELECT ' + @columns + ' From '+@database+'..'+@table_name +
' except ' +
'SELECT ' + @columns + ' From '+@database+'..'+'HISTORY_'+@table_name + ') new_info) as super_q'
execute(@query)
Я получил этот образец из system_health