SQL 身份插入问题

1 sql-server

你能帮忙吗。

我正在运行以下查询:

set identity_insert sites_dynamic ON 

insert into sites_dynamic
    select * 
    from gpbatt_archive.dbo.sites_dynamic 
    where site_serial_number = 49955

set identity_insert sites_dynamic OFF 

set identity_insert sites_static ON 

insert into sites_static
    select * 
    from gpbatt_archive.dbo.sites_static 
    where static_site_id in (select static_site_id 
                             from gpbatt_archive.dbo.sites_dynamic 
                             where site_serial_number = 49955)

set identity_insert sites_static OFF 
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

消息 8101,级别 16,状态 1,第 3
行 表“sites_dynamic”中标识列的显式值只能在使用列列表且 IDENTITY_INSERT 为 ON 时指定。

谁能帮我?我是新来的

Zoh*_*led 5

使用set identity_insert <tablename> on插入语句时必须包含列列表。

这是正确的方法:

set identity_insert targetTable on

insert into targetTable (col1, col2 [, coln])
select col1, col2 [, coln]
from sourceTable

set identity_insert targetTable off
Run Code Online (Sandbox Code Playgroud)

正如 Nick.McDermaid 所评论的那样 - 始终包含列列表是最佳做法。