我不知道为什么这不起作用。
我正在使用动态 SQL
这是我生成 SQL 语句的方式:
OLD: SET @dSQL = 'DBCC CHECKIDENT([' + @TableName + '], RESEED, 0); SET IDENTITY_INSERT ' + @TableName + ' ON; INSERT INTO ' + @thisTable + '(' + @pkcolumns + ', '+ @columns + ')' + ' SELECT (' + @pkcolumns + ', '+ @columns + ') FROM ' + @oldTable +' GROUP BY ' + @pkcolumns + '; SET IDENTITY_INSERT ' + @TableName + ' OFF;'
NEW: SET @dSQL = 'DBCC CHECKIDENT([' + @TableName + '], RESEED, 0); SET IDENTITY_INSERT ' + @TableName + ' ON; INSERT INTO ' + @thisTable + @pkcolumns + ', '+ @columns + ' SELECT DISTINCT(' + @pkcolumns + '), '+ @columns + ' FROM ' + @oldTable + '; SET IDENTITY_INSERT ' + @TableName + ' OFF;'
就像执行程序一样,变量是这样的。
@TableName DATA.HTI
@thisTable DATA.HTI
@oldTable [OR_JTU_2530].DATA.HTI
@columns [PARENT_HTI_ID], [OPERATION], [DISPLAY], [ACTIVE], [OFFSET]
@pkcolumns [HTI_ID]
@dSQL DBCC CHECKIDENT([DATA.HTI], RESEED, 0); SET IDENTITY_INSERT DATA.HTI ON; INSERT INTO DATA.HTI([HTI_ID], [PARENT_HTI_ID], [OPERATION], [DISPLAY], [ACTIVE], [OFFSET]) SELECT ([KPI_ID], [PARENT_KPI_ID], [OPERATION], [DISPLAY], [ACTIVE], [OFFSET]) FROM [OR_JTU_2530].DATA.HTI GROUP BY [HTI_ID]; SET IDENTITY_INSERT DATA.HTI OFF;
更新: 按删除分组,插入不同