34,590
社区成员
发帖
与我相关
我的任务
分享
SET IDENTITY_INSERT 表名ON INSERT INTO 表A(字段) SELECT 字段 FROM 表B SET IDENTITY_INSERT 表A OFF
--在存储过程中动态拼接是可以实现的。必须写字段不能省否则会提示:
--“仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'tmp_tmp_A'中的标识列指定显式值。”
create procedure test
as
begin
declare @sql varchar(max)
set @sql='SET IDENTITY_INSERT tmp_tmp_A ON '+CHAR(10)+CHAR(13)+'INSERT INTO tmp_tmp_A ([ID],[C1]) SELECT [ID],[C1] FROM tmp_tmp' +CHAR(10)+CHAR(13)+'SET IDENTITY_INSERT tmp_tmp_A OFF '
EXEC (@SQL)
end
DECLARE @s VARCHAR(MAX)
SELECT @s= ISNULL(@s+CHAR(13),'')+'SET IDENTITY_INSERT '+name+' ON' FROM sys.tables
SELECT @s