首页 > 解决方案 > 具有标识插入和序列的插入语句

问题描述

我正在尝试将一些值插入表中,但出现错误。所以基本上我有一个身份列自动插入,但有一次我想关闭它并插入值并再次打开它。因此,为此我创建了一个序列并通过将 id 增加 1 来插入值

SET IDENTITY_INSERT [dbo].[ILevelDataItem] ON
GO

CREATE SEQUENCE iLevelDataitemSeq
START WITH 270
INCREMENT BY 1;

INSERT INTO tblA 
    SELECT 
        NEXT VALUE FOR iLevelDataitemSeq,
        REPLACE ([ReferenceDescription], 'LTM', 'RP'),
        [iLevelId]
    FROM 
        [dbo].[tblA] 
GO

SET IDENTITY_INSERT [dbo].[ILevelDataItem] OFF
GO

DROP SEQUENCE iLevelDataitemSeq;
GO

我收到这些错误:

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

消息 3701,级别 11,状态 5,第 39 行
无法删除序列“iLevelDataitemSeq”,因为它不存在或您没有权限。

标签: sql-server

解决方案


我能够通过将所有列名(如插入)添加到 tblA(c1,c2,c3) 值 ('','','') 来解决这个问题


推荐阅读