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

ejemplos de triggers

Estas en el tema de ejemplos de triggers en el foro de Mysql en Foros del Web. estoy desarrollando una facturacion con la bbdd en mysql, y quisiera poner la logica de la bbdd en el mysql con procedimientos y triggers. he ...
  #1 (permalink)  
Antiguo 18/02/2008, 07:31
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 8 meses
Puntos: 0
ejemplos de triggers

estoy desarrollando una facturacion con la bbdd en mysql, y quisiera poner la logica de la bbdd en el mysql con procedimientos y triggers.
he leido el manual de mysql para gestionarlos pero los ejemplos son tan basicos que cuando quiero algo un poco mas complejo estoy cojo por todos sitios.
alguien me puede aconsejar o dejar algunos ejemplos de triggers y disparadores que actualizen campos de otras tablas cuando se hace un insert, delete o update
...
(por ejemplo:
al grabar un albaran, descontar las unidades del fichero de articulos controlando que el codigo del articulo puede ser blanco y no tener que actualizarlo)

gracias.
  #2 (permalink)  
Antiguo 18/02/2008, 10:33
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: ejemplos de triggers

samples trigger mysql
ejemplos trigger mysql
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 19/02/2008, 07:42
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 8 meses
Puntos: 0
Re: ejemplos de triggers

Os dejo mi intento de creacion de mi primer trigger en mysql.

create trigger act_article after delete on linalbar
begin
declare apliarstock char(1);
select aplisto into aplicarstock from series where codi = old.serie;
if (aplicacarstock = 'Y') then
begin
update articles set stockact = stockact + old.quantitat where codi=old.article
end;
end;

pues me da error en el begin, y en los manuales he leido que necesito poner al principio
delimiter |
y el a final del script

!
delimiter ;

me podeis aclarar que hago mal
gracias
  #4 (permalink)  
Antiguo 19/02/2008, 08:46
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
Re: ejemplos de triggers

No estás programando en Pascal.
No puede haber dos BEGIN anidados.
Fíjate bien en la sintaxis de las sentencias de control de flujo.
Cita:
IF condición THEN
sentencias;
ELSE
sentencias;
ELSEIF condicion THEN
sentencias;
END IF;
Por otr lado, si lo estás haciendo en modo consola, es necesario reemplazar el delimitador de sentencias para que te tome el texto completo del trigger como un todo.

En ese caso tienes que poner:
Cita:
DELIMITER $$
CREATE TRIGGER trig1 BREFORE INSERT ON Tabla1
BEGIN

(El cuerpo del trigger va acá)

END $$

DELIMITER ;
Eso se hace para que reconozca el fin del script antes de almacenarlo, y luego SIEMPRE se debe reestablecer el delimitador ";".

Nunca uses DELIMITER // o bien DELIMITER \\. Puede causar un caos en el código.
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 00:43.