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行。
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行。
也可以用外键约束用“on delete cascade”,这样就可以级联删除了,不需要触发删除了。
比如说表结构是这样的
A(结点编号,根结点编号,父结点编号,子结点个数,结点所在的层数..)
结点编号是主键
就像是动网BBS的数据库的其中的关天论坛结构的一张表类似
具体怎么实现呢?
A表的结点编号是主键
B表的结点编号是外键
那么检查B表的外键定义部分,看有没有"on delete cascade",如果没有,就重建外键加上这句,即可。如果你用触发器,那就编程实现了,具体方法要根据你的具体应用之间的关系了...