似乎无法插入我的数据库

时间:2017-11-01 18:44:05

标签: sql-server

我正在尝试将我们场地的音乐类型添加到我们的数据库中。该表包含流派名称和简单私钥。无论出于什么原因,当我运行此代码时,我收到错误

  

当IDENTITY_INSERT设置为OFF时,无法在表'Musical_Styles'中为identity列插入显式值。

我做错了什么?

INSERT INTO Musical_Styles (StyleID, StyleName)
VALUES ('26', 'AltROCK') 

2 个答案:

答案 0 :(得分:4)

最有可能的是,您的列StyleID被定义为INT IDENTITY - 这意味着,SQL Server将为每个插入自动增加该列 - 这意味着应该不明确地为它提供值 - 让SQL Server处理它!

试试这个:

INSERT INTO Musical_Styles (StyleName)
VALUES ('AltROCK') 

但是,如果真的必须提供显式值 - 无论出于何种原因 - 那么您必须首先在表上启用IDENTITY_INSERT,插入您的值,然后再次关闭标识插入:< / p>

SET IDENTITY_INSERT Musical_Styles ON;

INSERT INTO Musical_Styles (StyleID, StyleName)
VALUES (26, 'AltROCK');

SET IDENTITY_INSERT Musical_Styles OFF;

由于StyleID最有可能是INT列,请将值放入单引号(这会使其成为字符串,并导致不必要的来回转换)。

答案 1 :(得分:1)

那将完成这项工作:

USE YourDB
GO
SET IDENTITY_INSERT Schema.YourTable ON;

INSERT INTO Musical_Styles
(StyleID, StyleName)
VALUES (26, 'AltROCK');
SET IDENTITY_INSERT Schema.YourTable OFF;