Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - dynamisches SQL im Trigger nicht erlaubt

MYSQL IN FUNCTION UND TRIGGER UNTERSTÜTZEN KEINE DYNAMISCHE EINFÜGE ABER PROZEDUR KANN DYNAMISCHES EINFÜGEN UNTERSTÜTZEN.

SO KÖNNEN SIE ÄNDERUNGEN IN DER PROZEDUR VORNEHMEN UND PROCEDURE IN der ABFRAGE „attribut_values ​​TABLE INSERT“ MACHEN.

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

UND NACHDEM WERDEN SIE NUR ANRUFEN VERFAHREN

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 //