我在mysql上創建觸發器時發生異常,粘貼下面的觸發器片段。我希望在這個觸發器中的prepare語句拋出這個異常,請糾正我語法中的任何錯誤。在存儲函數或觸發器問題中,不允許動態SQL,但在mysql上創建觸發器時
DELIMITER $$
CREATE DEFINER=`root`@`localhost` TRIGGER mysql_common.mysql_alert_trigger after insert on mysql_common.alert FOR EACH ROW
BEGIN
set @col_string = "col1,col2,col3";
set @val_string = "('val1','val2','val3')";
SET @s := CONCAT('INSERT into msql_common.seperated_processlist(',@col_string,') values ', @val_string);
PREPARE dynamic_statement FROM @s;
EXECUTE dynamic_statement;
DEALLOCATE PREPARE dynamic_statement;
END $$
DELIMITER ;
你想在這個觸發器中完成什麼?你爲什麼要構造一個動態的SQL語句? (這是非常不尋常的和冒險的!) – duskwuff
我需要這個觸發器來處理應用程序數據。 –
這實際上並不能解釋你想要做什麼。你能舉一個更具代表性的例子嗎? (當然,觸發器在每次激活時都不插入相同的數據...) – duskwuff