oracle在同一个表上更新级联

时间:2014-07-12 15:48:18

标签: oracle triggers foreign-keys parent-child cascade

ID -name -         parent     act
1   computer            1       E
2   chemicals           2       E
3   furniture           3       E
4   CPUs                1       E
5   Laptops             1       E
6   Webcams             1       E
7   Hotel Furniture     3       E
8   Home Furniture      3       E

我上面有一张桌子。 ID和父删除级联相互连接。如果这个顶级类别H希望拥有以下所有内容,我会在更改列时执行操作。

CREATE OR REPLACE TRIGGER CASCADE_ABC_UPD
BEFORE UPDATE
OF ID ON MY_TABLE_NAME
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
 UPDATE MY_TABLE_NAME SET act=:NEW.act WHERE  PARENT=:OLD.ID;
END ;

我的第一个例子是该行的ID值' act'价值' H'没有。然后我想。父值等于其中一行' act'价值在' H'得到。

ID 1,2,3 is main category. 4,5,6,7,8 is sub category. 

computer  main category             act='E'   
computer  > CPUs  sub category      act='E'        
computer  > Laptops  sub category   act='E'                  
computer  > Webcams  sub category   act='E'   

现在:我想更新该计算机主类别

更新MY_TABLE_NAME SET act =' H' WHERE ID = 1;

触发器被触发(没有错误但是没有工作)

 BEGIN
     UPDATE MY_TABLE_NAME SET act=:NEW.act WHERE  PARENT=:OLD.ID;
    END ;

之后

computer  main category             act='H'   
computer  > CPUs  sub category      act='E'        
computer  > Laptops  sub category   act='E'                  
computer  > Webcams  sub category   act='E'  

希望:

computer  main category             act='H'   
computer  > CPUs  sub category      act='H'        
computer  > Laptops  sub category   act='H'                  
computer  > Webcams  sub category   act='H'  

我已更新主要类别,子类别,但仍处于有效状态。主要类别,被动被动的子类如果你想得到所有。是否可以将其作为级联更新

0 个答案:

没有答案