比方我有a表
当中有个字段id为主键
id是b表中的外键
现在我想删除a表主键就直接把b表有关id的字段都删了
怎么写语句呢?

解决方案 »

  1.   

    delete a,b from a inner join b on a.id=b.id where a.id=1231
      

  2.   

    或者定义外键时设置为 on delete cascade
      

  3.   

    现在我想删除a表主键就直接把b表有关id的字段都删了
    是删除记录还是修改结构?如是前者设置级联删除
    delete a,b from a inner join b on a.id=b.id where a.id=你的值
      

  4.   

    a表与b表建立主外键关联的关系,先删除b的外键。
      

  5.   


    改为这个就不报错了
    为什么呢?
    一开始时restrict
      

  6.   

    on delete cascade是级联删除。
      

  7.   


    那restrict , no action 跟 set null分别是什么意思呢?
      

  8.   

    set null方式 
       在父表上update/delete记录时,将子表上匹配记录的列设为null 
       要注意子表的外键列不能为not null 
       On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用   No action方式 
       如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 
       这个是ANSI SQL-92标准,从mysql4.0.8开始支持   Restrict方式 
       同no action, 都是立即检查外键约束