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

No puedo hacer el trigger

Estas en el tema de No puedo hacer el trigger en el foro de Mysql en Foros del Web. tengo una tabla ejemplo1 y lo que quiero hacer es que despues de ingresar un nombre en tabla1 ejemplo ingrese juan solo en la columna ...
  #1 (permalink)  
Antiguo 16/10/2009, 01:59
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 1
No puedo hacer el trigger

tengo una tabla ejemplo1 y lo que quiero hacer es que despues de ingresar un nombre en tabla1 ejemplo ingrese juan solo en la columna nombre y quiero que el disparador me de "por defecto" con el trigger la fecha y hora del nuevo nombre que ingrese osea si se graba juan con su fecha y hora que fue grabado el siguiente usuario cambie otra fecha y otra hora, hago el trigger pero me dice que esta bien, pero al momento de insertar me sale error

este es mi codigo:

create table ejemplo1(
nombre varchar(30),
fecha date,
hora time);
Query OK, 0 rows affected (0.02 sec)


create trigger insertar_fecha after insert on ejemplo1
for each row
insert into ejemplo1 values(curdate(),curtime());
Query OK, 0 rows affected (0.04 sec)


insert into ejemplo1(nombre) values('pepe');
ERROR 1442 (HY000): Can't update table 'ejemplo1' in stored function/trigger be
cause it is already used by statement which invoked this stored function/trigger

cual es el error si se supone que esta bien creado el trigger , gracias por la respuesta de antemano
  #2 (permalink)  
Antiguo 16/10/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 puedo hacer el trigger

No puedes dentro de un trigger ejecutar una sentencia contra la misma tabla que disparó el trigger. No sólo está bloqueada, sino que además la acción, de poderse hacer, generaría un loop infinito.
Por lo demás, si lo que quieres es que ponga la fecha actual, ¿por qué no lo haces directamente en la sentencia del INSERT:
Código sql:
Ver original
  1. INSERT INTO ejemplo1 VALUES ('Juan José', DATE(NOW()), TIME(NOW()));
Es más simple.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/10/2009, 10:31
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: No puedo hacer el trigger

gracias por la respuesta la voy a tener en cuenta, cuando me enseñaron trigger siempre usaban 2 tablas ahora veo porque no puedo usar 1 sola tabla, el motivo que queria hacer eso y no en forma directa es porque mediante una pagina web iba a registrar a una persona pero no queria ingresar la fecha y hora porque cualquiera podria poner la fecha y hora que quisiese pero si creaba un trigger no habia esa posibilidad que manipulasen la fecha y hora del registro pero ya encontre como hacerlo desde java para que no hagan eso.
por si aca lo pongo para alguien, se que no es la parte de java sino mysql pero igual y gracias por la respuesta cuando haga trigger ya se a que se debe el error :)


Date f=new Date();

SimpleDateFormat formatohora=new SimpleDateFormat("h:mm:ss a");
String hora=formatohora.format(f); //--->11:23:49 AM


SimpleDateFormat formatofecha=new SimpleDateFormat("dd/MMM/yy");
String fecha=sdfs.format(f); //--->16/oct/09
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 08:21.