11 messages in com.mysql.lists.mysql-esRe: Triggers
FromSent OnAttachments
Emiliano Horcada25 Aug 2006 09:08 
Ing. Edwin Cruz25 Aug 2006 09:38 
Emiliano Horcada25 Aug 2006 09:49 
Ing. Edwin Cruz25 Aug 2006 10:14 
Emiliano Horcada25 Aug 2006 10:18 
Ing. Edwin Cruz25 Aug 2006 10:34 
Emiliano Horcada25 Aug 2006 10:43 
Ing. Felix Manuel Galicia Paredes25 Aug 2006 12:01 
Emiliano Horcada28 Aug 2006 05:57 
Emiliano Horcada05 Sep 2006 07:14 
Edwin Cruz05 Sep 2006 07:42 
Subject:Re: Triggers
From:Ing. Felix Manuel Galicia Paredes (fgal@sepuede.gob.mx)
Date:08/25/2006 12:01:18 PM
List:com.mysql.lists.mysql-es

te recomiendo que uses mejor la linea de comandos, el primer error que te mando es porque te falta un ";"

trata con lo siguiente (desde linea de comandos):

DELIMITER $$ ; CREATE TRIGGER userDeleteOrden AFTER DELETE ON usuarios FOR EACH ROW BEGIN UPDATE usuarios SET Orden = Orden - 1 WHERE Orden > OLD.Orden END; DELIMITER ; $$

Mensaje citado por Emiliano Horcada <emil@gmail.com>:

Muy buen dato. Me sigue tirando un error, en este caso es este:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE usuarios SET Orden = Orden - 1 WHERE Orden > OLD.Orden END' at line 6

On 8/25/06, Ing. Edwin Cruz <ecr@medel.com.mx> wrote:

Si estas intentando crearlo desde phpmyadmin no uses delimiter, el delimiter es para linea de comando, l oque hace el delimiter es cambiar el carácter con que le dices a el cliente mysql que ya termino la sentencia a ejecutar, por eso cuando creas procedimientos, funciones y/o triggers pones delimiter porque dnetro de su declaracion se necesitan los ";" y sin delimiter no te lo permite.

Intenta solamente:

CREATE TRIGGER userDeleteOrden AFTER DELETE ON usuarios FOR EACH ROW BEGIN UPDATE usuarios SET Orden = Orden - 1 WHERE Orden > OLD.Orden END;

Saludos!

-----Mensaje original----- De: Emiliano Horcada [mailto:emil@gmail.com] Enviado el: Viernes, 25 de Agosto de 2006 12:19 p.m. Para: mysq@lists.mysql.com Asunto: Re: Triggers

Lo estoy ejecutando desde el PHPMYADMIN y la versión que tengo es 5.0.22 Está bien?.

Emiliano J. Horcada

On 8/25/06, Ing. Edwin Cruz <ecr@medel.com.mx> wrote:

De donde estás intentando crear tu triger???? En linea de comandos?

El error esta diciendo que es en el delimiter no en la declaracion de tu trigger

Version de mysql???

Recuerda que solo a partir de la version 5.0.x mysql tiene soporte para triggers

Saludos!

-----Mensaje original----- De: Emiliano Horcada [mailto:emil@gmail.com] Enviado el: Viernes, 25 de Agosto de 2006 11:50 a.m. Para: mysq@lists.mysql.com Asunto: Re: Triggers

Si:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$

CREATE TRIGGER userDeleteOrden AFTER DELETE ON usuarios FO' at line 1

Emiliano J. Horcada

On 8/25/06, Ing. Edwin Cruz <ecr@medel.com.mx> wrote:

Podrias copiar y pegar el error por favor??

Aparentemente no existe ningun error en tu definición

DELIMITER $$

CREATE TRIGGER userDeleteOrden AFTER DELETE ON usuarios FOR EACH ROW BEGIN UPDATE usuarios SET Orden = Orden - 1 WHERE Orden > OLD.Orden END;

$$

-----Mensaje original----- De: Emiliano Horcada [mailto:emil@gmail.com] Enviado el: Viernes, 25 de Agosto de 2006 11:09 a.m. Para: mysq@lists.mysql.com Asunto: Triggers

Buenos días. Tengo un inconveniente con un triger. La situación es la siguiente. Tengo una tabla de usuarios que tiene un campo que se llama 'Orden'. Este se incrementa con cada registro. El tema es que cuando se elimina un registro, quisiera que los que no quede un salto de por ejemplo Orden = 3 y el siguiente registro Orden = 5 por que se ha eliminado el Orden = 4. Entonces pensé crear un Trigger que cuando se elimine un registro en la tabla 'usuarios' que decremente el valor del campo Orden basandome en el valor del campo Orden del registro eliminado. Y escribí algo así:

DELIMITER $$

CREATE TRIGGER userDeleteOrden AFTER DELETE ON usuarios FOR EACH ROW BEGIN UPDATE usuarios SET Orden = Orden - 1 WHERE Orden > OLD.Orden END;

$$

Pero me tira error de sintaxis. Y seguro que es así por que es mi primera vez con Triggers. Alguien sabe como hacerlo?.

Gracias.

Emiliano J. Horcada