내 대답이 파티에 늦었 음을 압니다. 그러나 내가 해결 한 방식은 모든 답변과 약간 다릅니다.
상황이 발생하여 몇 개의 열을 제외하고 테이블의 행을 복제해야합니다. 그 소수는 새로운 가치를 갖게 될 것입니다. 이 프로세스는 향후 테이블 변경을 자동으로 지원해야합니다. 이는 열 이름을 지정하지 않고 레코드를 복제 함을 의미합니다.
내 접근 방식은
- Sys.Columns를 쿼리하여 테이블의 전체 열 목록을 가져오고 where 절에서 건너 뛸 열 이름을 포함합니다.
- 열 이름으로 CSV로 변환하십시오.
- 빌드 선택 ... 이것을 기반으로 스크립트에 삽입합니다.
declare @columnsToCopyValues varchar(max), @query varchar(max)
SET @columnsToCopyValues = ''
--Get all the columns execpt Identity columns and Other columns to be excluded. Say IndentityColumn, Column1, Column2
Select @columnsToCopyValues = @columnsToCopyValues + [name] + ', ' from sys.columns c where c.object_id = OBJECT_ID('YourTableName') and name not in ('IndentityColumn','Column1','Column2')
Select @columnsToCopyValues = SUBSTRING(@columnsToCopyValues, 0, LEN(@columnsToCopyValues))
print @columnsToCopyValues
Select @query = CONCAT('insert into YourTableName (',@columnsToCopyValues,', Column1, Column2) select ', @columnsToCopyValues, ',''Value1'',''Value2'',', ' from YourTableName where IndentityColumn =''' , @searchVariable,'''')
print @query
exec (@query)