【问题标题】:Select records and delete using stored procedure使用存储过程选择记录并删除
【发布时间】:2015-01-08 07:40:40
【问题描述】:

我有这样的例子,

Table1
Table2
Table21
Table22
Table23

Table2Table1 的子表

我写了一个存储过程Delete_Table2,它删除了所有子表Table21Table22Table23Table2

现在我正在创建删除存储过程,用于从Table1 删除记录,例如:

Create PROC [dbo].[Delete_Table1]
    @Table1Id int
AS
BEGIN
    BEGIN TRAN delete_table1_trans
        --Select Table2ID from Table2 where Table1Id = @Table1ID
        --loop records and EXEC Delete_Table2 @param

    COMMIT TRAN delete_table1_trans
END

最好的主意是什么?我可以使用游标,但试图找出好主意,例如在 select 语句上调用函数。

Select DELETE_Table2 (Table2Id) 
from Table2 
where Table1Id = 1 

【问题讨论】:

  • 为什么要删除这么多表?真实的故事是什么样的?为什么不把所有东西和事务一起放在一个 proc 下?只有在需求不明确的情况下,你才能得到最好的 IDEA。

标签: sql-server function stored-procedures


【解决方案1】:

如果表设置正确,ON CASCADE DELETE 将为您完成此操作。您所描述的似乎是对 RDBMS IMO 的滥用。如果关键关系如此迟钝,我建议考虑另一种设计。

How do I use cascade delete with SQL Server?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 2010-12-13
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    相关资源
    最近更新 更多