2016-09-01 2 views
0

서버 버전 인 MySQL의 삽입 쿼리를 거부한다. 라우터는 1 분마다 임의로 삽입 쿼리를 보냅니다. 삽입 쿼리의 예는특히 열이 제로 (0)

테이블 스키마
INSERT INTO radacct(acctsessionid,acctuniqueid,username,realm,nasipaddress, 
nasportid,nasporttype,acctstarttime,acctstoptime,acctsessiontime, acctauthentic, 
connectinfo_start, connectinfo_stop, acctinputoctets, acctoutputoctets, 
calledstationid,callingstationid, acctterminatecause, servicetype, framedprotocol, 
framedipaddress, acctstartdelay, acctstopdelay, xascendsessionsvrkey) 
VALUES ('25', 'bv4545ae155701','batmanuser', '', '192.168.1.100', '991990188', 
'Ethernet', '2016-08-25 19:15:40', NULL, '0','RADIUS', '','', '0', '0', '', 
'55:6t:33:xy:59:9o', '','Framed-User', 'PPP', '10.57.16.0','0', '0', ''); 

: 문제가 "0"을 갖는 테이블 필드 "acctinputoctets""acctoutputoctets"입니다

+----------------------+-------------+------+-----+---------+----------------+ 
| Field    | Type  | Null | Key | Default | Extra   | 
+----------------------+-------------+------+-----+---------+----------------+ 
| radacctid   | bigint(21) | NO | PRI | NULL | auto_increment | 
| acctsessionid  | varchar(32) | NO | MUL |   |    | 
| acctuniqueid   | varchar(32) | NO | MUL |   |    | 
| username    | varchar(64) | NO | MUL |   |    | 
| groupname   | varchar(64) | NO |  |   |    | 
| realm    | varchar(64) | YES |  |   |    | 
| nasipaddress   | varchar(15) | NO | MUL |   |    | 
| nasportid   | varchar(15) | YES |  | NULL |    | 
| nasporttype   | varchar(32) | YES |  | NULL |    | 
| acctstarttime  | datetime | YES | MUL | NULL |    | 
| acctstoptime   | datetime | YES | MUL | NULL |    | 
| acctsessiontime  | int(12)  | YES | MUL | NULL |    | 
| acctauthentic  | varchar(32) | YES |  | NULL |    | 
| connectinfo_start | varchar(50) | YES |  | NULL |    | 
| connectinfo_stop  | varchar(50) | YES |  | NULL |    | 
| acctinputoctets  | bigint(20) | YES |  | NULL |    | 
| acctoutputoctets  | bigint(20) | YES |  | NULL |    | 
| calledstationid  | varchar(50) | NO |  |   |    | 
| callingstationid  | varchar(50) | NO |  |   |    | 
| acctterminatecause | varchar(32) | NO |  |   |    | 
| servicetype   | varchar(32) | YES |  | NULL |    | 
| framedprotocol  | varchar(32) | YES |  | NULL |    | 
| framedipaddress  | varchar(15) | NO | MUL |   |    | 
| acctstartdelay  | int(12)  | YES |  | NULL |    | 
| acctstopdelay  | int(12)  | YES |  | NULL |    | 
| xascendsessionsvrkey | varchar(10) | YES |  | NULL |    | 
+----------------------+-------------+------+-----+---------+----------------+ 

더 우리에게 사용 및 0 값을 갖는 축적 된 행이 없습니다 서버에 공간이 많이 소요 . 삽입 쿼리에 대한 제어권이 없습니다. 삽입 쿼리를 어떻게 거부합니까?

mysql> delimiter $$ 
mysql> create trigger blockZero before insert on radacct 
    -> for each row 
    -> begin 
    -> if new.val < 1 then 
    -> signal sqlstate '45000'; 
    -> end if; 
    -> end;$$ 
Query OK, 0 rows affected (0.01 sec) 
+0

당신은 테이블 변경을 요청하거나 거부 – Drew

+0

0,0 항목을 거부 2 개의 필드에 대해서 0,0 엔트리를 가지는 삽입 쿼리 radacct 테이블 –

+0

check 제약 조건이 작동하지 않습니다. 삽입 트리거는 "전혀 신경 쓰지 않아"라고 말할 수 없습니다. – Drew

답변

0

이 삽입 트리거 전에 작성

업데이트

삽입 트리거 전에

mysql> delimiter $$ 
mysql> create trigger blockZero before insert on radacct 
    -> for each row 
    -> begin 
    -> if new.acctinputoctets < 1 then 
    -> signal sqlstate '45000'; 
    -> end if; 
    -> end;$$ 
Query OK, 0 rows affected (0.01 sec) 

https://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html

관련 문제