如何从两个表中删除数据?

时间:2019-06-14 09:53:04

标签: c# sql sql-server

我有两个表teacherstudent。不同的老师有学生。当我删除一位老师时,与该老师有关的学生也应删除。 学生在表教师中具有与TeacherId相关的StudentTeacherId。

2 个答案:

答案 0 :(得分:1)

有两种方法:

如果您不使用ORM:

  1. 在SQL Server中根据外键约束定义级联删除,然后只需要在Teacher表上发送删除查询。

  2. 创建一种方法,该方法将根据老师吸引学生,然后删除他们,然后删除老师。

如果您使用的是ORM:

1'在EF(我猜是在其他ORM中)中,您可以指定级联删除,因此ORM将为您处理删除教师的情况。

2'使用ORM,获取学生的实体,将其删除,然后删除教师

我认为最适合您的是选项1,因为您没有提到任何ORM。在这种情况下,请阅读以下内容:How do I use cascade delete with SQL Server?

答案 1 :(得分:0)

您将需要删除当前的FK约束,并添加一个启用了ON DELETE CASCADE的新约束。

示例:

ALTER TABLE Test
ADD CONSTRAINT fk_teacher
FOREIGN KEY (teacherID)
REFERENCES Test2 (teacherID)
ON DELETE CASCADE;

从教师表中删除一行后,它将删除学生中与您有关系的所有行