选择记录并使用存储过程删除

时间:2015-01-08 07:40:40

标签: sql-server function stored-procedures

我有这样的例子,

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 

1 个答案:

答案 0 :(得分:0)

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

How do I use cascade delete with SQL Server?