Я пытаюсь отобрать данные в списке таблиц (~ 30) на основе первичного ключа.
Мой подход заключался в следующем: 1. Создайте промежуточную таблицу и загрузите в нее нужные данные для каждой таблицы
2. Обрежьте исходную таблицу
3. Вставьте данные из промежуточной таблицы обратно в исходную таблицу. .
Вот код, который я использую до сих пор:
declare @table nvarchar(max)
open tab
fetch next from tab into @table
while(@@FETCH_STATUS = 0)
begin
print @table
exec ('select * into ' +@table+'_intermediate from '+@table+' where P_ID in( select P_ID from pc_table )')
exec ('truncate table '+@table)
exec ('insert into '+@table+' select * from '+@table+'_intermediate')
exec ('drop table '+@table+'_intermediate')
fetch next from tab into @table
end
close tab
deallocate tab
Я сталкиваюсь с ошибкой:
Cannot insert an explicit value into a timestamp column.
Use INSERT with a column list to exclude the timestamp column,
or insert a DEFAULT into the timestamp column.
Итак, эта ошибка говорит мне, что я не могу ничего вставить в столбец меток времени.
Чтобы избежать выбора метки времени, мне нужно избегать ее выбора (т.е. использовать select *).
Есть ли простой способ выбрать все столбцы, кроме метки времени типа, или мне нужно будет перейти к информационной схеме и создать оператор динамического выбора для каждой таблицы?
(или неявный вопрос, есть ли лучший способ сделать то, что я пытаюсь сделать?)
Спасибо