现有两个表:
表B的xxx列是表A的xxx列的外键,现在譬如要删除A.Name='a'的列(表B中没有Name这个列),
怎样才能从表B中也删除相应的记录? 这个SQL语句要怎么写呢?谢谢谢谢~

解决方案 »

  1.   

    嗯 可是这个找外键表的数据 不会是手工去找的吧 有SQL语句可以执行的吧??
    百度到什么cascade级联删除,看不懂诶,这是什么意思,书上也没有相关介绍啊?
      

  2.   

    那就是说需要delete两个地方么?
    如果很多的表之间都有外键关系的话,那要在取消外键后,对每张表里的相应记录做删除么?
    SQL Server就没有智能点的自动连带删除的么?
      

  3.   

    表A引用了表B的XXX列,你删除表A的记录,跟表B有什么关系啊!
    级联删除是删除主表B记录时,同时删除从表A中引用列的记录!
      

  4.   

    >_<! A是主表,B中有一列和A是相同的。
    请问怎么级联删除呢,能写个SQL语句么?书上真的翻不到,百度到一点也看不太懂- -
      

  5.   

    请教级联删除的SQL语句怎么写呢?
      

  6.   


    create table A (id int primary key);
    insert into A values(1)
    insert into A values(2)
    gocreate table B (
     id1 int references A(id) on delete cascade,
     id2 int,
     primary key (id1,id2))
    insert into B values(1,1)
    insert into B values(1,2)
    insert into B values(2,1)
    insert into B values(2,2)
    godelete from A where id=1select * from Bdrop table B,A
    /*id1         id2
    ----------- -----------
    2           1
    2           2(2 行受影响)
      

  7.   

    大概能知道一点,可是我现在是sql server里通过新建表建好了诶,外键也设好了,
    id1 int references A(id) on delete cascade,可这个cascade设置在哪里呢?
    在查询编辑器里面那种就一两句语句的怎么写额?谢谢谢谢~
      

  8.   

    - -大神,我们还没学触发器...
    额 悲催 暂时搞不定了 发现目前只会勉强写select 不会delete 囧
      

  9.   


    create trigger a_del 
    on a 
    for delete 
    as 
    delete 
    from b
    where b.ano in(select ano from deleted)delete from a where aname='xx'
    select * from a这段代码执行之后完全没效果诶。为啥呢= =
      

  10.   

    我照书上写的这段代码,执行后完全没变化诶,求大神指点...create trigger a_del 
    on a 
    for delete 
    as 
    delete 
    from b
    where b.ano in(select ano from deleted)delete from a where aname='xx'
    select * from a