我正在尝试将我们场地的音乐类型添加到我们的数据库中。该表包含流派名称和简单私钥。无论出于什么原因,当我运行此代码时,我收到错误
当IDENTITY_INSERT设置为OFF时,无法在表'Musical_Styles'中为identity列插入显式值。
我做错了什么?
INSERT INTO Musical_Styles (StyleID, StyleName)
VALUES ('26', 'AltROCK')
答案 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;