Asp.net 如何执行两个删除语句

Asp.net 如何执行两个删除语句,asp.net,sql,stored-procedures,Asp.net,Sql,Stored Procedures,我有这个..但是它告诉我我不能删除这个表,因为它是通过外键连接到另一个表的 所以我也需要这样做: ALTER PROCEDURE dbo.ModeratorSpamDeleteThread @ThreadsID INT AS DELETE Threads WHERE ThreadsID=@ThreadsID 问题是如何将两个stammant合并为一个?首先在注释中执行delete,然后在线程中执行delete @ThreadsID INT AS DELET

我有这个..但是它告诉我我不能删除这个表,因为它是通过外键连接到另一个表的

所以我也需要这样做:

    ALTER PROCEDURE dbo.ModeratorSpamDeleteThread

  @ThreadsID INT

AS

  DELETE Threads
  WHERE ThreadsID=@ThreadsID

问题是如何将两个stammant合并为一个?

首先在注释中执行delete,然后在线程中执行delete

  @ThreadsID INT

AS

  DELETE Comments
  WHERE ThreadsID=@ThreadsID

这就是你可以做到的:

ALTER PROCEDURE dbo.ModeratorSpamDeleteThread
  @ThreadsID INT
AS

DELETE Comments
WHERE ThreadsID=@ThreadsID 

DELETE Threads
WHERE ThreadsID=@ThreadsID

查看外键的删除级联。我一定会添加回滚功能,以防第二条语句失败。@Avada Kedavra-这是个好主意。通常,事务是在中间层/客户端开始的。我不是sql从业者……但我可以看到这种方法一直在工作……除非……两个版主同时删除线程……对吗?@Matrix001-如果第二次删除由于某种原因失败,回滚可能会派上用场。如果在同一事务中执行两个delete语句,则可以在删除失败时执行回滚,并从注释中返回已删除的行。线程中的删除失败的原因可能是您忘记删除与线程具有FK关系的其他表。看看这个和这个答案
ALTER PROCEDURE dbo.ModeratorSpamDeleteThread
@ThreadsID INT
AS

  DELETE Comments
  WHERE ThreadsID=@ThreadsID

  DELETE Threads
  WHERE ThreadsID=@ThreadsID

GO