28
Jul
06

Trigger in mySQL

Folgendes (mySQL 5) Skript legt eine Tabelle an. Alle Daten die im Feld passwd gespeichert werden, wandelt mySQL in einen md5 String um. Ein bereits gewandelter String wird nicht neu gewandelt.

CREATE TABLE `foo` (
   `id` int(11) NOT NULL,
   `passwd` varchar(255) collate latin1_general_ci NOT NULL,
   `name` varchar(255) collate latin1_general_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

DELIMITER $$

CREATE TRIGGER md5ize_on_insert
BEFORE INSERT ON foo
FOR EACH ROW
      BEGIN
         SET NEW.passwd = md5( NEW.passwd ) ;
      END$$

CREATE TRIGGER md5ize_on_update
   BEFORE UPDATE ON foo FOR EACH ROW
      BEGIN
         IF NEW.passwd NOT REGEXP '^[0-9A-Za-z]{32}$' THEN
            SET NEW.passwd = md5(NEW.passwd);
         END IF;
      END $$

DELIMITER ;

Selbsterklärend und erhebt keinen Anspruch auf Vollständigkeit.


0 Responses to “Trigger in mySQL”


  1. No Comments

Leave a Reply