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”
Leave a Reply