我有这样的例子,
Table1
Table2
Table21
Table22
Table23
Table2
是Table1
我编写了一个存储过程Delete_Table2
,删除了所有子表,Table21
,Table22
,Table23
和Table2
。
现在我正在创建删除存储过程以从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
答案 0 :(得分:0)
如果表格设置正确,CASCADE DELETE将为您执行此操作。你所描述的似乎是滥用RDBMS IMO。如果关键关系是那么迟钝,我建议考虑另一种设计。