Benutzer-Werkzeuge


MySQL Spalte bei SELECT updaten

Ich suchte nach einer Möglichkeit eine bestimmte Spalte einer MySQL-Zeile bei einem erfolgreichen SELECT zu aktualisieren. Hintergrund: ich habe eine Tabelle mit Netzbereichen, von welchen meine Postfix-Server Verbindungen ablehnen sollen. Dort gibt es eine Spalte (active) mit einem Zeitstempel. Diese wollte ich bei jedem erfolgreichen SELECT aktualisieren, damit ich anhand dieser Spalte Einträge ermitteln kann, welche schon länger „nicht mehr gebraucht“ wurden.

Der „einzige“ Weg dafür ist ein PROCEDURE auf der Tabelle, welches erst eine UPDATE und dann den notwendigen SELECT macht. Bei mir geht es um die Tabelle postfix.blacklist-cidr

mysql -uroot -pGEHEIM
delimiter //
CREATE PROCEDURE postfix.block (IN ip VARCHAR(15))  
BEGIN    
 UPDATE `blacklist-cidr` SET `active` = NOW() WHERE INET_ATON(ip) BETWEEN network AND broadcast; 
 SELECT 'reject' FROM `blacklist-cidr` WHERE INET_ATON(ip) BETWEEN network AND broadcast;  
END;
//
delimiter ;

Danach kann der Postfix das PROCEDURE folgendermassen ausführen

hosts = 10.66.99.2 10.66.99.1
user = postfix
password = london21
dbname = postfix
query = CALL postfix.block('%s')
Melden Sie sich an, um einen Kommentar zu erstellen.

Seiten-Werkzeuge