Bases de Datos - Trigger Mysql Actualiza campos en un insert

 
Vista:
sin imagen de perfil

Trigger Mysql Actualiza campos en un insert

Publicado por John (2 intervenciones) el 02/10/2015 19:29:33
Hola a todos!
Tengo una tabla detalle de factura con la siguiente estructura:

det_factura
fackey varchar(13) <--- num de comprobante (la estructura es 77-888-999999 donde 77 identifica el tipo de doc)
artcod varchar(6) <--- código de articulo
artnom varchar(50) <--- nombre del articulo

necesito generar un trigger que me permita actualizar el nombre del articulo concatenando el código del articulo el cual ya lo tengo generado:

CREATE DEFINER=`root`@`localhost` TRIGGER `mybd`.`tr_upd_nomart` BEFORE INSERT ON `mydb`.`det_factura`
FOR EACH ROW SET NEW.artnom = concat(right(NEW.artcod,5), left(NEW.artnom,45));

Con este trigger puedo actualizar el nombre del articulo concatenando el codigo + nombre, todo ok, el problema es que necesito meterle una condición, que solo actualice en las boletas mas no en las facturas, para ello la condición seria:

left(NEW.fackey,2)='03'

he tratado de hacerlo utilizando IF pero no puedo armar la estructura, alguien por ahí que me pueda apoyar con el caso.

Esto lo hago porque no se puede modificar el aplicativo ya que no contamos con las fuentes.
De antemano muchas gracias por su atención y tiempo!

JohnQZ.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Trigger Mysql Actualiza campos en un insert

Publicado por Leopoldo Taylhardat (187 intervenciones) el 03/10/2015 20:34:05
CREATE DEFINER=`root`@`localhost` TRIGGER `mybd`.`tr_upd_nomart` BEFORE INSERT ON `mydb`.`det_factura`
FOR EACH ROW
begin

if left(NEW.fackey,2)='03' then
SET NEW.artnom = concat(right(NEW.artcod,5), left(NEW.artnom,45));
end if;
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Trigger Mysql Actualiza campos en un insert

Publicado por John (2 intervenciones) el 05/10/2015 19:33:56
Muchas gracias Leopoldo Taylhardat

Te agradezco el tiempo, funciono perfectamente!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar