Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql - SQL dynamique non autorisé dans le déclencheur

MYSQL EN FONCTION ET LE DÉCLENCHEUR NE SUPPORTENT PAS L'INSERTION DYNAMIQUE MAIS LA PROCÉDURE PEUT SUPPORTER L'INSERTION DYNAMIQUE.

AFIN QUE VOUS POUVEZ APPORTER DES MODIFICATIONS DANS LA PROCÉDURE ET EFFECTUER LA PROCÉDURE DANS la TABLE INSÉRER LA REQUÊTE des valeurs d'attribut.

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

ET APRÈS VOUS SEREZ JUSTE APPELER LA PROCÉDURE

CALL attribute_values_after_insert(2,'code',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 //