Buen dia
Tengo una duda, estaba realizando el ejercicio y todo funciono normal hasta que tuve la curiosidad de ingresar la misma venta al mismo cliente varias veces. Al hacer esto me arrojo el siguiente mensaje pero de vez en cuando:
07:07:11 CALL SP_VENTA('20210619', 15, 100) Error Code: 1062. Duplicate entry '87978-1041119' for key 'items.PRIMARY' 0.156 sec
Luego lo intento de nuevo y funciona a veces si y otras veces no. ¿será que el RAND esta generando varias veces el mismo numero?
Este es el SP:
CREATE DEFINER=root
@localhost
PROCEDURE SP_VENTA
(FECHA DATE, MAXITEMS INT, MAXCANTIDAD INT)
BEGIN
DECLARE VCLIENTE VARCHAR(11);
DECLARE VPRODUCTO VARCHAR(10);
DECLARE VVENDEDOR VARCHAR(5);
DECLARE VCANTIDAD INT;
DECLARE VPRECIO FLOAT;
DECLARE VITEMS INT;
DECLARE VNFACTURA VARCHAR(10);
DECLARE VCONTADOR INT DEFAULT 1;
SELECT MAX(NUMERO)+1 INTO VNFACTURA FROM FACTURAS;
SET VCLIENTE = F_CLIENTE_ALEATORIO();
SET VVENDEDOR = F_VENDEDOR_ALEATORIO();
INSERT INTO FACTURAS (NUMERO, FECHA, DNI, MATRICULA, IMPUESTO) VALUES (VNFACTURA, FECHA, VCLIENTE, VVENDEDOR, 0.16);
SET VITEMS = F_ALEATORIO(1, MAXITEMS);
WHILE VCONTADOR <=VITEMS
DO
SET VPRODUCTO = F_PRODUCTO_ALEATORIO();
SET VCANTIDAD = F_ALEATORIO(1,MAXCANTIDAD);
SELECT PRECIO_LISTA INTO VPRECIO FROM PRODUCTOS WHERE CODIGO = VPRODUCTO;
INSERT INTO ITEMS(NUMERO,CODIGO,CANTIDAD,PRECIO) VALUES (VNFACTURA,VPRODUCTO,VCANTIDAD,VPRECIO);
SET VCONTADOR = VCONTADOR +1;
END WHILE;
END