0

我很好奇插入这些数据后出现的错误,如下所示:

insert into bi_sessions 
values (295377778,  '04dzzzf7-e66c-4e6d-9c42-465a16546e34', 1,  43223810,   48, 1043,   'BELGIUM BEER Survey (QA)', 54, 'Synovate Panel',   -1  , 2.5,  6,  3,  2.5 , 2.5,  '2010-04-01 00:00:00.000',  '2010-04-01 00:00:30.000',  -1  ,3, 1,  '000708c8507696c06f777',    '68.200.93.212',    20, '04dea8f7-e66c-4e6d-9c42-465a16546777'  , -1,   NULL,   55743   ,9  , 'Untargeted', 3,  2,  2016,   'General',  1966,   '2010-04-01 00:00:22.000',  1966,   '2010-04-01 00:00:32.000',  1,  9,  'English - United States',  'Federated Sample', 1)

错误消息如下:

只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表“会话”中的标识列指定显式值。

令人困惑 - 什么是身份列

4

2 回答 2

5

您的表有一个标识列,这意味着您有一个在插入行时会自动增加其值的列。由于这是自动的,除非您使用SET IDENTITY_INSERT ON. 所以,在你的情况下,你应该这样做:

INSERT INTO bi_sessions(<list of all non-identity column>)
VALUES (<your values>)
于 2013-02-06T20:17:51.697 回答
1

IDENTITY列是 SQL Server 本身确定值的列。它通常用于生成唯一标识值作为表(如您的sessions表)的主键 - 其他 RDBMS 将此称为自动增量自动编号列。

由于 SQL Server 自己确定这些值,因此不允许您将自己的值插入该列

为此,您需要在语句中明确指定列列表:INSERT

INSERT INTO dbo.bi_sessions(Col1, Col2, ...., ColN)
VALUES (...., ..., .......)
于 2013-02-06T20:18:41.600 回答