T1 T2 T3 T4 数据库中有这么的4个表T1是存放国家名称 T2是存放省名称 T3存市区名称 T4存县名称T1.2.3.4 这4个表都有2个字段 NO和NOTWO 做关系的 假设T4表有一条数据 NO=11111 NOTWO=12122 Name=博罗县那么在T3表中也会存一些数据如 NO=22222 NOTWO=11111 Name=惠州市还有T2.T1这表都会有关系的,现在我要用一条删除语句删除一个国家的数据 ,比如要删除中国,删除表T1中 中国的数据的时候同时也要删除 属于这个国家的
省份 市区 县城 如何实现?
省份 市区 县城 如何实现?
解决方案 »
- having count(*)这道题目我错在哪?怎么感觉参考答案错了
- UNDOTBS01.DBF太大的问题
- 新人提问:关于PL/SQL Developer 的函数
- 各位老大,看看数据怎样删除
- 请问在orcal8里面能否使用alter table删除一列
- 怪了,点击Net8 Configuration Assistant 无反应?
- temp表空间
- 超级问题,高手请进,ORA-06512
- 50分求助:连接oracle的javabean中用stmt = conn.createStatement();没问题。用stmt = conn.createStatement(java.sql.ResultSet.TYPE_SC
- 初学者的问题,谢谢在网的学哥学姐们帮帮忙
- 请教多表查询语句写法?
- SI Object Browser V10.1.0.0 一点连接弹出错误 急!
drop table 主表名 where 条件 cascade;在删除国家时,国家下面引用该国家的省将被级连删除,同时下级也会级连删除。
delete from 主表名 where 条件 cascade;你可以写触发器啊,在国家表,省份表,市表上建trigger,这样你随便删除一条数据,它下面关联的数据都会删除掉!
CREATE OR REPLACE TRIGGER T1
--AFTER INSERT OR UPDATE OR DELETE ON T1
AFTER DELETE ON T1
for each row
declare
-- local variables here
begin
--IF INSERTING THEN
-- insert into T2 (.......)
-- VALUES(:NEW.NO,:NEW.NOTOW,......);
--ELSIF DELETING THEN
DELETE FROM T2 WHERE NO=:OLD.No;
DELETE FROM T3 WHERE NO=:OLD.No;
DELETE FROM T4 WHERE NO=:OLD.No; --ELSE
-- UPDATE T2 SET NO=:NEW.NO WHERE NO=:OLD.NO;
--END IF;
end T1;
其他功能如insert update可以相应的修改就应该可以了 2楼正解!
2 id number primary key ,
3 name varchar2(20) ) ;
Table created
SQL> create table c_t (
2 id number primary key ,
3 name varchar2(20),
4 f_id number);
Table created
SQL> alter table c_t add (
2 constraint fk_c_f foreign key (f_id)
3 references f_t(id) on delete cascade) ;
Table altered
SQL> insert into f_t(id,name) values(1,'f1') ;
1 row inserted
SQL> insert into f_t(id,name) values(2,'f2') ;
1 row inserted
SQL> insert into f_t(id,name) values(3,'f3') ;
1 row inserted
SQL> commit ;
Commit complete
SQL> select * from f_t ;
ID NAME
---------- --------------------
1 f1
2 f2
3 f3
SQL> insert into c_t(id,name,f_id) values(1,'f1_c1',1) ;
1 row inserted
SQL> insert into c_t(id,name,f_id) values(2,'f1_c2',1) ;
1 row inserted
SQL> insert into c_t(id,name,f_id) values(3,'f1_c3',1) ;
1 row inserted
SQL> commit ;
Commit complete
SQL> commit ;
Commit complete
SQL> select * from c_t ;
ID NAME F_ID
---------- -------------------- ----------
1 f1_c1 1
2 f1_c2 1
3 f1_c3 1
SQL> select * from f_t ;
ID NAME
---------- --------------------
1 f1
2 f2
3 f3
SQL> delete f_t where id=1 ;
1 row deleted
SQL> select * from f_t ;
ID NAME
---------- --------------------
2 f2
3 f3
SQL> select * from c_t ;
ID NAME F_ID
---------- -------------------- ----------
SQL> commit ;
Commit complete