我已经确定了 3 种情况。
注册表上有一个触发器来计算 GPA。如果学生有成绩,它会更新或在 GPA 表中插入一个条目;没有成绩,没有 GPA 表条目。
我可以删除没有注册的学生(#1)。我可以删除一个有注册和成绩的学生(上面的#3)。但是我不能删除有注册但没有成绩的学生(#2)。我得到了一个参考约束违规。
DELETE 语句与 REFERENCE 约束“FK_dbo.GPA_dbo.Student_StudentID”冲突。冲突发生在数据库“”、表“dbo.GPA”、“StudentID”列中。
如果我无法删除没有注册(也没有 GPA 条目)的新学生,那么我会理解约束违规,但我可以删除该学生。这是一个注册但没有成绩(仍然没有 GPA 条目)的学生,我无法删除。
我已经修补了我的触发器,所以我可以继续前进。现在,如果您有注册,无论如何触发器都会将您插入 GPA 表中。但我不明白潜在的问题。任何解释将不胜感激。
物有所值:
这是数据库的一个片段:

--编辑--
这些表都是由 EntityFramework 创建的,我使用 SQL Server Management Studio 来生成这些表。
以下是带有约束的创建表语句。:
GPA 桌子:
CREATE TABLE [dbo].[GPA](
[StudentID] [int] NOT NULL,
[Value] [float] NULL,
CONSTRAINT [PK_dbo.GPA] PRIMARY KEY CLUSTERED
( …Run Code Online (Sandbox Code Playgroud)