我想阻止特定值插入ulog2_ct表

时间:2016-07-12 08:53:13

标签: mysql sql

我使用ulog2和mysql将nf_conntrack值收集到我的桥机器中的DB中。 所有东西都运行良好,但我想阻止插入具有"右(hex(orig_ip_saddr),8)=' 7f000001'"的特定值。 我只是执行查询"从ulog2_ct中删除右边(hex(orig_ip_saddr),8)=' 7f000001' "定期,但不是很好的解决方案。

ulog2提供查询以https://github.com/inliniac/ulogd2/blob/master/doc/mysql-ulogd2-flat.sql制作和插入特定数据库 但我无法完全理解,因为我不是sql专家。 我认为一些额外的查询可以解决我想要的问题,但我不知道如何。

插入mysql-ulogd2-flat.sql的查询如下:(第435行)

BEGIN
INSERT INTO ulog2_ct (oob_family, orig_ip_saddr, orig_ip_daddr, orig_ip_protocol,
    orig_l4_sport, orig_l4_dport, orig_bytes, orig_packets,
    reply_ip_saddr, reply_ip_daddr, reply_ip_protocol,
    reply_l4_sport, reply_l4_dport, reply_bytes, reply_packets,
    icmp_code, icmp_type, ct_mark, 
    flow_start_sec, flow_start_usec,
    flow_end_sec, flow_end_usec)
VALUES (_oob_family, _orig_ip_saddr, _orig_ip_daddr, _orig_ip_protocol,
    _orig_l4_sport, _orig_l4_dport, _orig_bytes, _orig_packets,
    _reply_ip_saddr, _reply_ip_daddr, _reply_ip_protocol,
    _reply_l4_sport, _reply_l4_dport, _reply_bytes, _reply_packets,
    _icmp_code, _icmp_type, _ct_mark,
    _flow_start_sec, _flow_start_usec,
    _flow_end_sec, _flow_end_usec);
RETURN LAST_INSERT_ID();
END

徐。

1 个答案:

答案 0 :(得分:0)

只需在ulog2_ct上创建一个触发器

(检查语法验证,因为我在这里输入了它)

    CREATE TRIGGER trig_ulog2_ct
BEFORE INSERT ON ulog2_ct
FOR EACH ROW
BEGIN
    DECLARE msg VARCHAR(255);
    IF (right(hex(new.orig_ip_saddr),8)='7f000001') THEN
        SIGNAL 'your error message Not to insert'
    END IF;


END

告诉我们