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中 中国的数据的时候同时也要删除 属于这个国家的
省份 市区 县城  如何实现?

解决方案 »

  1.   

    可以使用
    drop table 主表名 where 条件 cascade;在删除国家时,国家下面引用该国家的省将被级连删除,同时下级也会级连删除。
      

  2.   

    哥,你写错了聊。
    delete from 主表名 where 条件 cascade;你可以写触发器啊,在国家表,省份表,市表上建trigger,这样你随便删除一条数据,它下面关联的数据都会删除掉!
      

  3.   


    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楼正解!
      

  4.   

    SQL> create table f_t (
      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
     
      

  5.   

    触发器或者是on delete cascade