【发布时间】:2020-07-08 08:36:46
【问题描述】:
美好的一天,
我目前在使用 IDENTITY_INSERT 时遇到问题。我有一个具有所需权限的链接服务器设置。
我已经测试过我可以将 IDENTITY_INSERT 与一个简单的插入查询一起使用,但如果我使用以下代码,它就不起作用。
SET IDENTITY_INSERT table_name ON
INSERT INTO table_name SELECT * FROM OPENQUERY([server_name], 'SELECT * FROM ##Tmp2');
使用上述方法我收到以下错误: 只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表 'table_name' 中的标识列指定显式值。
谁能帮我解决这个请求,我想从不同服务器的 Tmp 表中选择数据,我不能忽略 IDENTITY 列,因为它是必需的或链接到其他表。
提前谢谢你。
【问题讨论】:
-
您没有提供明确的列列表。
insert into table_name (aColumn, anotherColumn, ...) select aColumn, anotherColumn, ... from ... -
@allmhuran - 非常感谢,我刚刚尝试过,它奏效了,你的生活更安全了。感谢您的帮助。
-
不客气。养成在任何地方都使用显式列列表的习惯,它最终会拯救你,因为有一天有人会在表中添加一列,
select *或insert mytable select ...会受到伤害:)
标签: tsql identity-insert