在sql中更新父级及其所有记录子级

时间:2009-08-27 11:12:43

标签: sql sql-server

我正在使用SQL Query,下面是表格。

组织

OrgID    Name          RAOGID     RAOID   SubGroupID   StatusID
1       Org RAOG1     1   NULL       NULL                2
2       Org RAO1            NULL       1        NULL      3
3       Org Sub Group1   NULL       NULL         1        1
4       Org RAOG2     2   NULL       NULL                2
5       Org RAO2            NULL       2        NULL      3
6       Org Sub Group2   NULL       NULL         2        2

RAOG

RAOGID  AccredID
1              2  
2              2  
3              2  

RAO

RAOID   RAOGID
1         1
2         3
3         3

子组

SubGroupID  RAOID
1            1
2            2
3            2

我有四个表,如上所示,这里有详细信息, 1)每个RAOG,RAO和SUBGROUP都是一个组织 2)RAOG可以有很多RAO 3)RAO可以有很多子组

我想更新我的组织表statusid,在更新之前我想检查它是否是RAOG类型的oraganisation然后它将更新它下面的所有RAO和SUBGROUPs和RAO相同它将更新他下面的所有SUBGROUP它不会更新它的父RAOG.And如果它是SUBGROUP类型的组织它将只更新子组而不是其父记录。

谢谢, 最好的祝福, 的Manoj

1 个答案:

答案 0 :(得分:1)

最好通过将您要创建的检查和调用包装到一个存储过程中来实现,然后可以在事务中执行该存储过程。

CREATE PROCEDURE [dbo].[MySprocOfDoom]

@param1             paramType,
    --...
AS
BEGIN
SET NOCOUNT ON;
    --SELECT statements here
END