Мне нужно создать хранимый процесс, который должен копировать существующие строки, основанные на условии, в ту же таблицу и деактивировать существующие записи, устанавливая значение столбца активного флага равным 0.
Я пытался insert into [tablename] select * from [tablename] where [condition]
, очевидно,Я получил ошибку из-за ограничения первичного ключа, упоминание списка столбцов, исключая столбец первичного ключа в select, будет работать, но есть несколько таблиц, и некоторые таблицы имеют около 300 столбцов.Я не хочу давать длинный список в выборе.Поскольку я использую SQL Server, я нашел решение для SO, получив список столбцов из information_schema.columns
и подготовив динамический запрос.Тем не менее, я не удовлетворен каким-либо из этих решений, есть ли другой способ, которым я могу это сделать?