我收到以下错误:
违反主键约束“PK_ss_student_grade”。无法在对象“dbo.ss_student_grade”中插入重复键。重复键值为 (301, 1011, 24801, 33)。
如果我在插入之前检查表,则没有具有此类主键的记录。
插入是通过 C# 代码完成的,我确保代码只运行一次。即使在错误之后,如果我检查表,我仍然没有得到这样一个主键的记录。
注意:触发器在表中的插入上运行,但它只写入日志文件,不会影响数据库中的任何数据
什么会使 SQL 误以为密钥已经存在?
编辑:代码调用执行以下操作的过程
insert into ss_student_grade(sg_school_code,sg_acad_year,sg_serial_no,sg_student_key,sg_original_grade,sg_grade,sg_school_grade,sg_category_type,sg_operator,sg_datetime)
select pg_school_code, pg_acad_year, et_serial_no, mep_student_key, pg_grade,pg_grade,pg_grade,'Original', SYSTEM_USER, @ExamCreationDate
from #StudentGrades
where not exists (select 1 from ss_student_grade where sg_school_code = pg_school_code and sg_acad_year = pg_acad_year and sg_serial_no = et_serial_no and sg_student_key = mep_student_key)
我正在使用 SQL Server 2008 R2 和 Visual Studio 2010 Ultimate