Ver Mensaje Individual
  #5 (permalink)  
Antiguo 01/12/2008, 04:24
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Duda rapida de disparador

1. Si vas a insertar el valor de un sólo campo en una tabla que tenga más de uno, debes definirlo en el INSERT. No importa que el otro campo en este caso sea un auto_increment. aún así debes hacerlo.
2. Cuando manipulas datos recibidos dentro de un TRIGGER debes usar las pseudovariables NEW y OLD..
3. No uses el OR (|) para crear el DELIMITER, puede tener efectos no deseados si usas ese mismo signo dentro del cuerpo, lo que eventualmente puede suceder. Es preferible usar un doble signo, como por ejemlpo $$ (es el más usado).
4. El END del cuerpo no requiere de fiun de línea (;) sino de fin de cuerpo, que es el mismo delimitador que pusiste al inicio.
El ejemplo quedaría, entonces:
Código sql:
Ver original
  1. DELIMITER $$
  2. CREATE TRIGGER capturaemail BEFORE INSERT ON origen
  3. FOR EACH ROW BEGIN
  4. INSERT INTO(copiacontenido_copia) VALUES(contenido_origen);
  5. END $$
  6. DELIMITER ;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)