2014-06-17 68 views
1

我有三个不同的表,例如tbl1tbl2tbl3。我需要从三个表中的每一个中删除行。唯一的问题是,每个表之间都存在外键约束。如果从tbl1删除一行,删除级联并删除tbl2tbl3中引用tbl1中已删除行的所有行。我怎样才能删除特定的行?我需要使用外键删除多个表中的多行

回答

0

这里有一个办法:

DELETE FROM tbl3 WHERE tbl3.tbl1_id = 'foo'; 
DELETE FROM tbl2 WHERE tbl2.tbl1_id = 'foo'; 
DELETE FROM tbl1 WHERE tbl1.tbl1_id = 'foo'; 
+0

感谢您的重播 –

0

有2种方式

  1. ,则应该设置外来约束ON DELETE CASCADE只有从第一个表中删除
  2. 你可以做级联manualy使用3删除查询
+0

是的,我使用了三个删除查询。谢谢 –

-1

如果($ _ REQUEST [ '行动'] == '删除'){

 $id=$_REQUEST['site_id']; 
     $qry_arry=mysql_query("Select site_name from site where site_id=$id and client_id='".$client_id."'"); 
     $site_qry=mysql_fetch_array($qry_arry); 
     $site_nm=$site_qry['site_name']; 
     $del_server=mysql_query("DELETE FROM `server` where site_name='".$site_nm."' and client_id='".$client_id."'"); 
     $del_work=mysql_query("DELETE FROM `workstation` where site_name='".$site_nm."' and client_id='".$client_id."'"); 
     $qry=mysql_query("DELETE FROM `site` where site_id=$id and client_id='".$client_id."'"); 
     if(isset($del_server) && isset($del_work) && isset($qry)) 
     { 
     $msg='<div style="width:450px; -webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; font-family:Arial, Helvetica, sans-serif; font-size:14px; color:#000000; text-decoration:none; border:solid 1px #999999; margin:5px; padding:5px; background:#BFFFBF;">Deleted successfully </div>'; 
        echo "<script>window.location = 'https://portal.itimpulse.in/home-3' </script>"; 
      }  
        exit(0); 
    }