我正在通过C#程序将Excel工作表导入到数据库中,我第一次导入没有问题,但是随后,当我想导入相同的Excel工作表时,但是新行,我无法我收到以下错误:
Violation of PRIMARY KEY constraint 'PK_Students'. Cannot insert duplicate key in object 'dbo.Students'.
The statement has been terminated.
我的SQL语句如下:
INSERT INTO Students (Student_Id, Student_name, Subject_Class, Subject_Id, Student_Course)
SELECT Student_Id, Student_name,Subject_Class, Subject_Id, Student_Course
FROM Students WHERE NOT EXISTS (SELECT 1 FROM Students.*)
答案 0 :(得分:0)
当您从Student表中插入Student表时,您的insert语句没有意义。错误是尝试通过(主键Student_Id)将重复行插入Student表。
您使用的是哪个excel库?如果您还没有:https://code.google.com/p/linqtoexcel/
,请给予linq优势如果您不想花时间学习linq excel,您可以随时删除学生表中存在于电子表格中的所有记录(通过Student_Id),然后再次从电子表格中插入所有记录。
答案 1 :(得分:0)
问题解决了。我使用了以下声明:
Merge into bkTeachers as tab1 using(select * from Teachers) as tab2 on tab1.Teacher_Id=tab2.Teacher_Id when matched then update set tab1.Teacher_Name=tab2.Teacher_Name,tab1.Password=tab2.Password when not matched then insert values(tab2.Teacher_Id,tab2.Teacher_Name,tab2.Password);