SQL> CREATE TABLE A(F1 INTEGER,F2 INTEGER);表已创建。
SQL> BEGIN
  2  FOR X IN 1..10 LOOP
  3  INSERT INTO A VALUES(X,X+2);
  4  END LOOP;
  5  COMMIT;
  6  END;
  7  /PL/SQL 过程已成功完成。SQL> CREATE TABLE B AS SELECT * FROM A;表已创建。SQL> SELECT * FROM A;        F1         F2
---------- ----------
         1          3
         2          4
         3          5
         4          6
         5          7
         6          8
         7          9
         8         10
         9         11
        10         12已选择10行。
SQL> SELECT * FROM B;        F1         F2
---------- ----------
         1          3
         2          4
         3          5
         4          6
         5          7
         6          8
         7          9
         8         10
         9         11
        10         12已选择10行。
SQL> CREATE OR REPLACE TRIGGER TR1
  2  AFTER DELETE ON A FOR EACH ROW
  3  BEGIN
  4  DELETE B WHERE F1=:OLD.F1 AND F2=:OLD.F2;
  5  END;
  6  /触发器已创建
SQL> DELETE A WHERE F1=1;已删除 1 行。SQL> SELECT * FROM B;        F1         F2
---------- ----------
         2          4
         3          5
         4          6
         5          7
         6          8
         7          9
         8         10
         9         11
        10         12已选择9行。

解决方案 »

  1.   

    可以,
    也可以用外键约束用“on delete cascade”,这样就可以级联删除了,不需要触发删除了。
      

  2.   

    呵呵,还是不太懂
    比如说表结构是这样的
    A(结点编号,根结点编号,父结点编号,子结点个数,结点所在的层数..)
    结点编号是主键
    就像是动网BBS的数据库的其中的关天论坛结构的一张表类似
    具体怎么实现呢?
      

  3.   

    如果A、B表是主外键关系。
    A表的结点编号是主键
    B表的结点编号是外键
    那么检查B表的外键定义部分,看有没有"on delete cascade",如果没有,就重建外键加上这句,即可。如果你用触发器,那就编程实现了,具体方法要根据你的具体应用之间的关系了...