【发布时间】:2012-11-07 14:50:53
【问题描述】:
我有以下代码:
declare c cursor for
select
id_user_V3
,device_type
,4
,notfication_mode
,t1.device_token
,registration_date
,rank
,1
from audiv2.dbo.mya_webservice_device_token t1
join migr.asoc_V2_glb_user t2 on t1.user_id = t2.id_user_V2
open c
fetch next from c into @id_user_v3,@type,@application_id,@notiffication,@device_tooken,@creation_date,@rang,@status
while @@FETCH_STATUS=0
begin
set @device_id = (ISNULL((SELECT MAX(id_device) FROM usr_device)+1,1))
SET IDENTITY_INSERT usr_device ON
insert into usr_device values
(
@device_id
,@id_user_v3
,@type
,@application_id
,@notiffication
,@device_tooken
,@creation_date
,@rang
,@status
)
SET IDENTITY_INSERT usr_device OFF
fetch next from c into @id_user_v3,@type,@application_id,@notiffication,@device_tooken,@creation_date,@rang,@status
end
close c
deallocate c
我得到的错误是:
只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表 'usr_device' 中的标识列指定显式值。
我该如何解决这个问题?
提前致谢
【问题讨论】:
-
通过再次阅读错误消息或搜索此错误消息?插入标识值需要 两个 条件。 “使用了一个列列表并且 IDENTITY_INSERT 为 ON”。好吧,你已经打开了
IDENTITY_INSERT... -
@Damien_The_Unbeliever 我在插入表格之前将 IDENTITY_INSERT usr_device 设置为 ON
-
但正如错误消息所说,正如我强调的那样,您必须满足 两个 条件。您遇到了其中一个(打开
IDENTITY_INSERT)-您也必须遇到另一个-使用列列表。 -
是的,你是对的。谢谢你。将此作为答案发布。
标签: sql-server-2008 cursor identity-column