SQL - Duda Trigger Mysql

 
Vista:
Imágen de perfil de Daniel

Duda Trigger Mysql

Publicado por Daniel (2 intervenciones) el 29/07/2014 23:45:11
Hola amigos teniendo estas tres tablas tablas he tratado de hacer un trigger el cual funcione DESPUES de una insercion en la tabla Relacion_Venta_Producto el cual pueda darle un valor a la fila VP_Valor apartir de la fila VP_Existencia que esta en la misma tabla y de la fila Pr_Valor que se encuentra en la tabla proudcto pero ese el problema no puedo coger este dato, quiseira que me ayudaran , hasta el momento mi trigger esta hecho pero todo esta bien menos el llamado de la variable Pr_Valor

O si alguien solo me puede explicar como puedo introducir en un trigger el valor de una fila de otra columna que no sea a la que hace referencia el trigger quedeare feliz

mi trigger esta asi:
DELIMITER |
CREATE TRIGGER `Relacion_Venta_Producto_BINS` AFTER INSERT ON `Relacion_Venta_Producto`
FOR EACH ROW

UPDATE Relacion_Venta_Producto SET VP_ValorP = NEW.VP_Existencias *(SELECT PR_Valor where VP_Producto_Pr_Codigo=Relacion_Venta_Producto.New.VP_Producto_Pr_Codigo) WHERE VP_Producto_Pr_Codigo = New. VP_Producto_Pr_Codigo;
END
|

DELIMITER ;


scritps

CREATE TABLE IF NOT EXISTS `Rotoflex`.`Producto` (
`Pr_Codigo` INT(10) NOT NULL,
`Pr_Descripccion` VARCHAR(45) NOT NULL,
`Pr_Existencia` INT NOT NULL,
`Pr_Valor` DOUBLE NOT NULL,
`Pr_IVA` INT NOT NULL DEFAULT 16,
`Pr_Activo` INT NOT NULL DEFAULT -1,
`Pr_GrupoUno` VARCHAR(30) NOT NULL DEFAULT 'ABRASIVOS IMPORTADOS\'',
`Pr_Marca` VARCHAR(20) NOT NULL DEFAULT 'PFERD',
`Pr_TipoIVA` VARCHAR(10) NOT NULL DEFAULT 'GRAVADO',
PRIMARY KEY (`Pr_Codigo`, `Pr_Descripccion`))
ENGINE = InnoDB;



CREATE TABLE IF NOT EXISTS `Rotoflex`.`Venta` (
`V_idVenta` INT NOT NULL,
`P_Vendedor` INT NOT NULL,
`P_Cliente` INT NOT NULL,
`P_Nombre` VARCHAR(45) NOT NULL,
`P_Valor` DOUBLE NOT NULL,
PRIMARY KEY (`V_idVenta`),
INDEX `FK_Venta-vendedor_idx` (`P_Vendedor` ASC),
INDEX `FK_Venta-Clienteid_idx` (`P_Cliente` ASC),
INDEX `FK_Venta_ClienteN_idx` (`P_Nombre` ASC),
CONSTRAINT `FK_Venta-vendedor`
FOREIGN KEY (`P_Vendedor`)
REFERENCES `Rotoflex`.`Personal` (`P_idPersonal`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_Venta-Clienteid`
FOREIGN KEY (`P_Cliente`)
REFERENCES `Rotoflex`.`ClienteUs` (`Cl_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_Venta-ClienteN`
FOREIGN KEY (`P_Nombre`)
REFERENCES `Rotoflex`.`ClienteUs` (`Cl_Nombre`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;



-- -----------------------------------------------------
-- Table `Rotoflex`.`Relacion_Venta_Producto`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Rotoflex`.`Relacion_Venta_Producto` (
`VP_idVenta` INT NOT NULL,
`VP_Producto_Pr_Codigo` INT NOT NULL,
`VP_Producto_Pr_Descripccion` VARCHAR(45) NOT NULL,
`VP_Existencias` INT NOT NULL,
`VP_ValorP` DOUBLE NOT NULL DEFAULT 0,
PRIMARY KEY (`VP_idVenta`, `VP_Producto_Pr_Codigo`, `VP_Producto_Pr_Descripccion`),
INDEX `fk_Venta_has_Producto_Producto1_idx` (`VP_Producto_Pr_Codigo` ASC, `VP_Producto_Pr_Descripccion` ASC),
INDEX `fk_Venta_has_Producto_Venta1_idx` (`VP_idVenta` ASC),
CONSTRAINT `fk_Venta_has_Producto_Venta1`
FOREIGN KEY (`VP_idVenta`)
REFERENCES `Rotoflex`.`Venta` (`V_idVenta`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Venta_has_Producto_Producto1`
FOREIGN KEY (`VP_Producto_Pr_Codigo` , `VP_Producto_Pr_Descripccion`)
REFERENCES `Rotoflex`.`Producto` (`Pr_Codigo` , `Pr_Descripccion`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
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