我正在进行备份,点击备份按钮后,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);
答案 0 :(得分:1)
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
答案 1 :(得分:0)
您遇到此问题,因为备份表中已存在包含主键的条目。例如,假设Teacher_Id是表中的PK。第一次备份表时没有错误,但是第二次尝试备份Teacher_Id时,备份表中已经存在错误。这将抛出你所面临的错误。
如果您只对Teachers表的最新快照感兴趣,则可以在备份之前删除备份表,否则需要添加检查备份表中是否已存在您尝试备份的行