sql >> Base de Datos >  >> RDS >> Mysql

Mysql - SQL dinámico no permitido en el disparador

MYSQL EN FUNCIÓN Y DISPARADOR NO SOPORTA INSERCIÓN DINÁMICA PERO EL PROCEDIMIENTO PUEDE APOYAR LA INSERCIÓN DINÁMICA.

PARA QUE PUEDA REALIZAR CAMBIOS EN EL PROCEDIMIENTO Y REALIZAR UN PROCEDIMIENTO EN LA TABLA INSERTAR CONSULTA de valores_atributos.

INSERTAR EN valores_de_atributo VALORES(product_id,column_name,val);

Y DESPUÉS SOLO SERÁ PROCEDIMIENTO DE LLAMADA

LLAME a valores_atributos_después_de_insertar(2,'código',132);

DELIMITER //
drop procedure if exists attribute_values_after_insert //
CREATE PROCEDURE attribute_values_after_insert(IN product_id INT, IN 
column_name VARCHAR(100), IN val VARCHAR(100))
BEGIN
SET @sql = NULL;

INSERT INTO attribute_values VALUES(product_id,column_name,val);

SELECT concat('UPDATE product_attributes SET product_attributes.', column_name, '=', val, ' WHERE id=', product_id) INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @sql = NULL;
END//
DELIMITER ;

DELIMITER //