【发布时间】:2017-02-22 06:27:02
【问题描述】:
DELIMITER |
DROP TRIGGER IF EXISTS update_trigger |
CREATE TRIGGER update_trigger
BEFORE UPDATE ON suborder
FOR EACH ROW
BEGIN
DECLARE change_value TEXT;
DECLARE new_data TEXT;
DECLARE changed_val BOOL;
DECLARE data TEXT;
DECLARE data2 TEXT;
SET data = '';
SET new_data = CONCAT("{", "\"order_id\"", ":", "\"", NEW.order_id, "\"");
SET changed_val = FALSE;
IF( NEW.order_status_id > 0 ) THEN
IF ( OLD.suborder_id != NEW.suborder_id ) THEN
SET changed_val = TRUE;
SELECT GROUP_CONCAT( suborder_id SEPARATOR ',' ) INTO data,
GROUP_CONCAT( suborder_id SEPARATOR ',' ) INTO data2
FROM oc_suborder
WHERE order_id = NEW.order_id AND
suborder_id != OLD.suborder_id
GROUP BY order_id;
SET new_data := CONCAT(new_data, ",", "\"suborders\"", ":{");
SET new_data := CONCAT(new_data, "\"old\"", ":", "\"",data ,",", OLD.suborder_id, "\"");
SET new_data := CONCAT(new_data, ",\"new\"", ":", "\"",data ,",", NEW.suborder_id, "\"");
SET new_data := CONCAT(new_data, "}");
END IF;
SET new_data := CONCAT(new_data, "}");
IF (changed_val = TRUE) THEN
INSERT INTO oc_order_change_log
SET order_id = NEW.order_id,
table_name = 'oc_suborder',
change_details = new_data,
date_added = NOW(),
solr_synced = 0;
END IF;
END IF;
END |
DELIMITER ;
显示为错误:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'GROUP_CONCAT( invoice_no SEPARATOR ',' ) INTO data2 附近使用的正确语法
【问题讨论】:
标签: mysql triggers group-concat