当 IDENTITY_INSERT 设置为 OFF 时,无法在表“tbl Fingerprint”中插入标识列的显式值 [重复]
Posted
技术标签:
【中文标题】当 IDENTITY_INSERT 设置为 OFF 时,无法在表“tbl Fingerprint”中插入标识列的显式值 [重复]【英文标题】:Cannot insert explicit value for identity column in table 'tbl Fingerprint' when IDENTITY_INSERT is set to OFF [duplicate] 【发布时间】:2014-02-24 05:41:36 【问题描述】:我正在尝试将数据插入到有四列的指纹表中 - ID(主键) - StudentID(外键)链接到学生表 - 描述 - 模板
但以下错误不断出现。我无法关闭 ID 的 IDENTITY,因为我希望它自动递增。我还有一个学生表来存储信息。我想要实现的是在输入学生详细信息后,我想将之前生成的学生ID复制到指纹表 - StudentID 列。我为此提供的代码如下所示。
private void btnSave_Click(object sender, EventArgs e)
fgrTemplate template = new fgrTemplate();
template.StudentID = std.StudentID;
template.Description = fngDes.Text;
template.Template = m_StoredTemplate;
if (upload.InsertTemplate(template))
MessageBox.Show("Student Successfully Added!");
else
MessageBox.Show("Student Not Successfully Added!");
using (SqlCommand com = new SqlCommand("INSERT INTO tblFingerprint (StudentID, Description, Template) values ('" + template.StudentID + "' ,'" + template.Description + "' ,@Template)", cn))
这就是我的网络服务中的内容。但是它给了我错误
【问题讨论】:
不要将 ID 列添加为插入的一部分。Insert Table (strcolumn1, strcolumn2) values (1,2)
Table(id int, strcolumn1 varchar(1), strcolumn2 varchar(2))
您在 INSERT 语句中传递了 ID
值,ID
作为身份类型应该获得一个自动递增编号。请参阅linked question 并在问题中发布您的相关代码。
【参考方案1】:
在为具有IDENTITY
列的表发出INSERT
语句时,不要在字段和值列表中包含标识列。例如,以下语句将失败:
INSERT INTO tbl (ID, StudentID) VALUES (1, 1)
但是这个语句会成功:
INSERT INTO tbl (StudentID) VALUES (1)
并将下一个可用的标识值插入ID
列。
现在,如果您确实想要插入实际身份,请执行以下操作:
SET IDENTITY_INSERT tbl ON
INSERT INTO tbl (ID, StudentID) VALUES (1, 1)
SET IDENTITY_INSERT tbl OFF
【讨论】:
@user3144368,请使用代码编辑您的问题并删除此评论。以上是关于当 IDENTITY_INSERT 设置为 OFF 时,无法在表“tbl Fingerprint”中插入标识列的显式值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值
无法添加表行,因为“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'Users' 中插入标识列的显式值”错误
IDENTITY_INSERT 设置为 OFF 的问题? :-/
当 IDENTITY_INSERT 设置为 OFF 时,无法在表“企业”中插入标识列的显式值