que significa , para que sirve?
Código PHP:
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`UP_ANIMALSINSERT`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`.`UP_ANIMALSINSERT`(OUT _AnimalID INT,_AnimalType VARCHAR(45))
BEGIN
INSERT INTO animals
(AnimalType)
VALUES
(_AnimalType);
SET _AnimalID=LAST_INSERT_ID();
END $$
DELIMITER ;
Encontre esto y me confundio un poco
Cita:
O sea que en resumen puedo usar ; y me quito de problemas y rollos raros? Ya he hablado de lo confuso que me resultaba cómo hacer un Stored Procedure en MySQL en comparación con MS-SQL Server que es mi habitual.
Un paso más en su comprensión, es la palabra “DELIMITER”.
Lo habitual para separar una instrucción de otra, es finalizarlas con un “;” pero un SP, al igual que un Trigger, estan formados por varias instrucciones, por lo tanto, antes de comenzar su definición, debes especificar qué caracter delimita (o separa) un SP o un Trigger del siguiente SP o Trigger.
La cuestión metalógica será, si cambias el delimitador de instrucciones por excelencia, para separar un conjunto de instrucciones agrupadas en un objeto (SP o Trigger) de otro objeto, cómo es que este delimitador sigue siendo necesario y funcional dentro de este conjunto de instrucciones? Entonces, para qué cambiarlo? y sobre todo, para qué restaurarlo después? Me parece una manera de marear la perdiz.
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|
DELIMITER ;
Un paso más en su comprensión, es la palabra “DELIMITER”.
Lo habitual para separar una instrucción de otra, es finalizarlas con un “;” pero un SP, al igual que un Trigger, estan formados por varias instrucciones, por lo tanto, antes de comenzar su definición, debes especificar qué caracter delimita (o separa) un SP o un Trigger del siguiente SP o Trigger.
La cuestión metalógica será, si cambias el delimitador de instrucciones por excelencia, para separar un conjunto de instrucciones agrupadas en un objeto (SP o Trigger) de otro objeto, cómo es que este delimitador sigue siendo necesario y funcional dentro de este conjunto de instrucciones? Entonces, para qué cambiarlo? y sobre todo, para qué restaurarlo después? Me parece una manera de marear la perdiz.
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|
DELIMITER ;
saludos