Sql server 在存储过程的BEGIN END块中,使用外键进行删除的顺序是否重要

Sql server 在存储过程的BEGIN END块中,使用外键进行删除的顺序是否重要,sql-server,Sql Server,我在SQL Server 2012数据库中有一个存储过程。我从父表中删除,然后删除子表行。子表具有指向父表中主键的外键 如果全部在开始-结束块中,则删除的顺序是否重要?我必须在父行之前删除子行吗?尽管有些数据库系统支持延迟约束,但在SQL Server中,每个语句的结尾都必须满足所有约束。因此,除非外键具有允许继续删除的规范,否则您将无法删除父行,直到没有子行引用它们 不过,也应该指出,这在这里没有影响。它们仅仅是将几个语句组合在一起的一种方法。即使在支持可延迟约束的数据库系统中,延迟也是根据事

我在SQL Server 2012数据库中有一个存储过程。我从父表中删除,然后删除子表行。子表具有指向父表中主键的外键


如果全部在开始-结束块中,则删除的顺序是否重要?我必须在父行之前删除子行吗?

尽管有些数据库系统支持延迟约束,但在SQL Server中,每个语句的结尾都必须满足所有约束。因此,除非外键具有允许继续删除的规范,否则您将无法删除父行,直到没有子行引用它们

不过,也应该指出,这在这里没有影响。它们仅仅是将几个语句组合在一起的一种方法。即使在支持可延迟约束的数据库系统中,延迟也是根据事务处理的。事务是通过
开始事务
提交[事务]
(或
回滚
)启动和完成的,而不是
开始
结束