Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

No me funciona los TRIGGERS en my sql phpmyadmin

Estas en el tema de No me funciona los TRIGGERS en my sql phpmyadmin en el foro de Mysql en Foros del Web. hola, tengo el MAMP en mi macbook y viene con un SQL server con phpmysql, mi version es 5.0.41, suspuestamente los triggers funcionan apartir de ...
  #1 (permalink)  
Antiguo 14/08/2009, 10:18
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
No me funciona los TRIGGERS en my sql phpmyadmin

hola,
tengo el MAMP en mi macbook y viene con un SQL server con phpmysql, mi version es 5.0.41, suspuestamente los triggers funcionan apartir de la 5.x, pero cada vez que inserto por ejemplo este:

create trigger fecha
after insert on Grupo
for each row
begin
insert intoGrupo set Fecha_x=9;
end;

me falla!!!

#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 'insert intoGrupo set Fecha_x=9' at line 5

fecha_x es un INT, la tabla grupo solo tiene los campor cod (int), fecha_x (int) y otro campo clave extrajera (que creo que no tendría que afectar, no?)

lo que quiero hacer es cada vez que se inserte algo en la tabla, pues que se rellene un campo automaticamente (ejemplo: campo fecha_nacimiento y edad, el campo edad se rellenaría solo)

cuaquier ayuda es agradecida!

saludos!
  #2 (permalink)  
Antiguo 14/08/2009, 10:23
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

Cita:
insert intoGrupo set Fecha_x=9;
Esto es un error de sintaxis.

Ademas, lo quie tratas de hacer, podría convertirse en un ciclo infinito.
Imagina un trigger que se dispare después de insertar en la tabla grupo. Pero dentro del trigger, se está tratando de hacer una inserción en la tabla grupo. No lol he probado, pero creo que no es posible.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 14/08/2009, 10:37
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

si tienes razon con lo del bucle infinito, pero asi:

create trigger fecha
after insert on Grupo
for each row
begin
update Grupo set Fecha_x=9;
end;

que tal?
  #4 (permalink)  
Antiguo 14/08/2009, 10:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

cambia la cosa.

Recuerda hacer uso de los delimiters.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 14/08/2009, 10:44
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

pero me falla =, y he copiado ejemplos de internet con la tabla igual y tb me falla,
quiero ver si alguien tiene o ha tenido el mismo problema.

pero los delimiters solo son para separar querys no???

Gracias
  #6 (permalink)  
Antiguo 14/08/2009, 10:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

En que te falla?
como lo ejecutas?
desde donde lo ejecutas?

Si es desde la consola de mysql correlo así:

Código sql:
Ver original
  1. delimiter &&
  2. CREATE TRIGGER fecha
  3. after INSERT ON Grupo
  4. FOR each ROW
  5. BEGIN
  6. UPDATE Grupo SET Fecha_x=9;
  7. end&&
  8. delimiter ;
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 14/08/2009, 11:13
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

cuando pongo:

CREATE TRIGGER fecha
after INSERT ON Grupo
FOR each row
begin
UPDATE Grupo SET Fecha_x=9;******ERROR
end;

me da error en la linera 5, lo ejecuto en la parte de sentencias SQL,

con tu sentencia me dice esto:

#1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'

Gracias
  #8 (permalink)  
Antiguo 14/08/2009, 12:10
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

Cita:
#1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
ya tienes un trigger disparándose para esa tabla.
Mysql no soporta múltiples triggers para un mismo evento.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 14/08/2009, 12:20
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

hola, ahora he añadido el REPLACE para que lo reemplace y me dice esto:

Error

consulta SQL:

delimiter && CREATE OR REPLACE TRIGGER fecha
AFTER INSERT ON Grupo
FOR each
ROW
BEGIN
UPDATE Grupo SET Fecha_x =9;

END &&

MySQL ha dicho: Documentación
#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 'TRIGGER fecha
after INSERT ON Grupo
FOR each row
begin
UPDATE Grupo SET Fech' at line 1
  #10 (permalink)  
Antiguo 14/08/2009, 12:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

Cita:
CREATE OR REPLACE
Esto no es soportado para triggers.

Busca con:
select *from information_schema.triggers;
los triggers que tuienes creados y los borras manualmente.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 14/08/2009, 17:19
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

muchisimas gracias,
lo miraré mañana.
  #12 (permalink)  
Antiguo 18/08/2009, 14:40
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

hola de nuevo,
ok, por fin creo triggers, jeje,
gracias pro ayudar!

este error saves pq ocurre?

tengo el trigger creado en la tabla 'grupo' que al insertar me ponga un '9' en fecha_x;

INSERT INTO `BBDD_prueba`.`Grupo` (
`Cod` ,
`Cod_Nivel` ,
`Fecha_x`
)
VALUES (
'2', '1', ''
)

MySQL ha dicho: Documentación
#1442 - Can't update table 'Grupo' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

saludos
  #13 (permalink)  
Antiguo 18/08/2009, 14:47
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

El trigger es disparado por un evento en la tabla grupo?
si es así, a eso hace referencia el error.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #14 (permalink)  
Antiguo 19/08/2009, 04:14
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

lo siento pero no te entiendo muy bien, lo que quiero es que al hacer un insert me rellene un campo del insert, por ejemplo: campo fecha_nacimiento y edad, el campo edad se rellenaría solo.

me explico?

gracias
  #15 (permalink)  
Antiguo 19/08/2009, 04:41
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

he creado el mismo triger pero en vez de en insert lo hago en un update y me da el mimso error :S
  #16 (permalink)  
Antiguo 19/08/2009, 05:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

Cita:
Iniciado por almirante Ver Mensaje
lo siento pero no te entiendo muy bien, lo que quiero es que al hacer un insert me rellene un campo del insert, por ejemplo: campo fecha_nacimiento y edad, el campo edad se rellenaría solo.

me explico?

gracias
El problema es que no puedes crear un TRIGGER que invoque una sentencia DML a la misma tabla, por cuanto la tabla está bloqueada en el momento en que el TRIGGER se dispara.
Esto se hace, entre otras cosas, para evitar loops infinitos: Imaginate que haces un TRIGGER que se dispare ante un UPDATE y que dentro de ese haces un UPDATE a la misma tabla, accion que dispara un el TRIGGER que hace la actualización de la tabla, acción que dispara el TRIGGER.... y así hasta el infinito.
¿Se comprende la idea?
Por eso, no se permite que un triger definido en una tabla realice operaciones DML en la misma tabla.
Si lo que quieres hacer es cambiar valores o agregarlos en otra tabla, no hay problema (en tanto la otra no tenga un trigger apuntando a la primera); si lo que deseas hacer es modificar valores en el registro entrante, o bien en la modificación entrante, eso se hace por medio de pseudovariables NEW o NEW/OLD.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #17 (permalink)  
Antiguo 19/08/2009, 12:02
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

hola de nuevo,
he creado un trigger asi:

delimiter &&
CREATE TRIGGER fecha AFTER INSERT ON Grupo
FOR each ROW
BEGIN
UPDATE Grupo SET new.Fecha_x =9;

END ;

y al insertar me da este error:

INSERT INTO `BBDD_prueba`.`Grupo` (
`Cod` ,
`Cod_Nivel` ,
`Fecha_x`
)
VALUES (
'3', '1', '5'
)

MySQL ha dicho: Documentación
#1442 - Can't update table 'Grupo' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

GRACIAS POR VUESTRA AYUDA Y PACIENCIA pq me toy volviendo loko!
  #18 (permalink)  
Antiguo 19/08/2009, 12:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

Código sql:
Ver original
  1. CREATE TRIGGER fecha AFTER INSERT ON Grupo
  2. FOR each ROW
  3. BEGIN
  4.     SET NEW.Fecha_x =9;
  5. END ;

Ten en cuenta que no se puede realizar una operación DML en la misma tabla que dispara el trigger...
Cuando usas NEW te estás refiriendo al registro entrante (leer manual de referencia en el link que puse). OLD es el registro tal y como estaba antes (dura sólo la ejecución del TRIGGER.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #19 (permalink)  
Antiguo 20/08/2009, 03:36
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

ok, entiendo, pero entonces como podría hacer el ejemplo que he propuesto?
  #20 (permalink)  
Antiguo 20/08/2009, 04:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

Como te lo estoy poniendo en mi último post...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #21 (permalink)  
Antiguo 20/08/2009, 08:35
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

AH! joder, no veía la diferencia, ahora lo pruebo,

Muchas gracias!
  #22 (permalink)  
Antiguo 25/08/2009, 03:08
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

hola de nuevo,
si que me funciona, lo que me falla ahora es como hacer algo asi:

new.edad=(YEAR(CURDATE())-YEAR(f_nacimiento));

es esto correcto???
edad es un integer.

Gracias
  #23 (permalink)  
Antiguo 25/08/2009, 03:24
 
Fecha de Ingreso: abril-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: No me funciona los TRIGGERS en my sql phpmyadmin

solucionado :
new.edad=(YEAR(CURDATE())-YEAR(new.f_nacimiento));
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:37.