在SQL中违反主键错误

本文关键字:错误 SQL | 更新日期: 2023-09-27 18:17:48

我正在做一个备份,在单击备份按钮时,Teachers表中的数据将被插入bkTeachers表中。对于我的其他表,我使用下面的语句,但是只有这个特定的Teachers表导致这个错误

违反了PRIMARY KEY约束'PK_bkTeachers'。无法在对象'dbo.bkTeachers'中插入重复键。

代码:

da = new SqlDataAdapter("INSERT INTO bkTeachers(Teacher_Id, Teacher_Name, Password) Select Teacher_Id, Teacher_Name, Password FROM Teachers WHERE NOT EXISTS (SELECT 1 FROM dbo.bkTeachers  WHERE dbo.bkTeachers.Teacher_Id = dbo.Teachers.Teacher_Id AND bkTeachers.Teacher_Name = Teachers.Teacher_Name  AND bkTeachers.Password = Teachers.Password)", conn);
System.Data.DataSet ds2 = new System.Data.DataSet();
da.Fill(ds2);

在SQL中违反主键错误

INSERT INTO bkTeachers(Teacher_Id, Teacher_Name,Password) 
Select Teacher_Id, Teacher_Name,Password FROM Teachers t
WHERE NOT EXISTS (SELECT 1 FROM dbo.bkTeachers  bk
WHERE bk.Teacher_Id = t.Teacher_Id 
AND bk.Teacher_Name = t.Teacher_Name  
AND bk.Password = t.Password)

试试这个。请验证您的其他查询以及。如果仍然不能工作,检查你的表,看看主键是什么,可能是> 3

您面临这个问题,因为在备份表中已经有一个带有主键的条目。例如,我们假设Teacher_Id是表中的PK。第一次备份表时不会出现错误,但是第二次尝试备份时,Teacher_Id已经存在于备份表中。这将抛出您所面临的错误。

如果您只对Teachers表的最新快照感兴趣,则可以在备份之前查看删除备份表,否则如果您试图备份的行不存在于备份表中,则需要添加检查