DELIMITER
DELIMITER $$
CREATE TRIGGER insert_pad
BEFORE INSERT on vehicles FOR EACH ROW
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE localid CHAR(17);
...
END$$
DELIMITER ;
另一个想法是:我认为触发器不允许对导致触发器被触发的语句中引用的表发出DML(insert/update/delete)。
但是在BEFORE INSERT触发器中,我们可以引用和修改即将插入的行的列的值。我们使用特殊限定符
NEW.
引用要插入的行中的列。例如:
DELIMITER $$
CREATE TRIGGER insert_pad
BEFORE INSERT ON vehicles FOR EACH ROW
BEGIN
-- if vin less than 17 characters, pad with Q
IF( CHAR_LENGTH(TRIM( NEW.vin )) < 17 ) THEN
SET NEW.vin = RPAD(TRIM( NEW.vin ), 17,'Q');
END IF;
END$$
DELIMITER ;