我有多张表 分别是acid_event,tcphdr,event,data,iphdr
现在要个判断如果data中的SID为1251的话 就把上面的几张表给清空掉 清空要同时进行

解决方案 »

  1.   

    delete from acid_event,tcphdr,event,data,iphdr where data.SID=1251;
      

  2.   

    在一个存储过程中实现,先判断条件,然后清空相关表。
    如果不想保留日志就使用delete删除多表。
    否则就使用truncate逐个清空。
      

  3.   

    删除很慢 所以我是看如果这段时间都没数据插入的话 用id去判断 一样的话 就用truncate清空
    你能简单的写下吗 
      

  4.   

    楼主到底想实现什么?mysql> select * from a1;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    |    3 |
    +------+
    3 rows in set (0.00 sec)mysql> select * from a2;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    |    3 |
    +------+
    3 rows in set (0.00 sec)mysql> select * from a3;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    |    3 |
    +------+
    3 rows in set (0.00 sec)mysql> delete a1,a2,a3 from a1,a2,a3
        -> where a1.id=1;
    Query OK, 7 rows affected (0.08 sec)mysql> select * from a1;
    +------+
    | id   |
    +------+
    |    2 |
    |    3 |
    +------+
    2 rows in set (0.00 sec)mysql> select * from a2;
    Empty set (0.00 sec)mysql> select * from a3;
    Empty set (0.00 sec)mysql>
      

  5.   

    就是想写一个
    procedure p_truncate(v_id   data.cad%type)
    is
    c_id int; 
    begin
    select   max(cid)  into  c_id  from data;
    if (c_id=c_id)  then
    truncate table acid_event data event icmphdr iphdr tcphdr udphdr;end p_truncate;
    意思差不多就是这样的 Mysql存储过程  不过要求就是判断后成功后 就清空 
    因为有可能判断的时候 cid是相等的 可是已经有数据差进来 就不一样了
      

  6.   

    if (c_id=c_id)  then
    truncate table acid_event data event icmphdr iphdr tcphdr udphdr;这个判断有什么特别的用处吗?
      

  7.   

    本来是mysql解析完一条数据 就删除一条 可是这样很慢 后面就做成先保存它的id
    因为Id是递增的 后面再去判断id是否是最大的 如果是就全部清空
    解析的时候 数据还是有进来的