具有可变输入的MySQL触发器

具有可变输入的MySQL触发器,mysql,Mysql,我试图为UDATES表创建一个触发器。我想我可以用多个触发器来实现这一点,但我想MySQL不支持同一类型的表上有多个触发器。所以我不得不把它包括在一个触发器中 基本上,我尝试根据当前表中更新的内容将新记录插入到不同的表中 以下是我到目前为止所做的工作: BEGIN -- Definition start INSERT INTO prices (stationID, price, type, prevPrice, prevDate, dateCreated, apiKey, uid) VALU

我试图为UDATES表创建一个触发器。我想我可以用多个触发器来实现这一点,但我想MySQL不支持同一类型的表上有多个触发器。所以我不得不把它包括在一个触发器中

基本上,我尝试根据当前表中更新的内容将新记录插入到不同的表中

以下是我到目前为止所做的工作:

BEGIN
-- Definition start
INSERT INTO prices (stationID, price, type, 
prevPrice, prevDate, dateCreated, apiKey, uid) 
VALUES(NEW.stationID, NEW.regPrice, 'reg', OLD.regPrice,
OLD.regDate, NEW.regDate, NEW.lastApiUsed, NEW.lastUpdatedBy);
-- Definition end
END
我需要做的是,
类型
可能会根据用户提供的类型而改变。因为用户在给定时间只能更新一种类型。我在考虑一个IF
IF-THEN
语句,但我不确定如何让它工作。我想我可以在
IF
语句中使用列名的字符串值,但我不确定这是否可行

大概是这样的:

    BEGIN
    -- Definition start
    IF(type == 'reg') THEN
    INSERT INTO prices (stationID, price, type, 
    prevPrice, prevDate, dateCreated, apiKey, uid) 
    VALUES(NEW.stationID, NEW.regPrice, 'reg', OLD.regPrice,
    OLD.regDate, NEW.regDate, NEW.lastApiUsed, NEW.lastUpdatedBy);
    END IF;
    -- Definition end
    END

我能够使用
IF-THEN-ELSE
完成交易。然后我测试了
NULL
值的条件。如果它是
真的
我就运行我的代码。现在由于某种原因,它只执行一个
INSERT
命令,即使
UPDATE
用于多个应用程序。有什么想法吗

BEGIN
-- Definition start
IF(NEW.regPrice IS NOT NULL) THEN
INSERT INTO prices (stationID, price, type, 
prevPrice, prevDate, dateCreated, apiKey, uid) 
VALUES(NEW.stationID, NEW.regPrice, 'reg', OLD.regPrice,
OLD.regDate, NEW.regDate, NEW.lastApiUsed, NEW.lastUpdatedBy);

ELSEIF(NEW.midPrice IS NOT NULL) THEN
INSERT INTO prices (stationID, price, type, 
prevPrice, prevDate, dateCreated, apiKey, uid) 
VALUES(NEW.stationID, NEW.midPrice, 'mid', OLD.midPrice,
OLD.midDate, NEW.midDate, NEW.lastApiUsed, NEW.lastUpdatedBy);

ELSEIF(NEW.prePrice IS NOT NULL) THEN
INSERT INTO prices (stationID, price, type, 
prevPrice, prevDate, dateCreated, apiKey, uid) 
VALUES(NEW.stationID, NEW.prePrice, 'pre', OLD.prePrice,
OLD.preDate, NEW.preDate, NEW.lastApiUsed, NEW.lastUpdatedBy);
END IF;
-- Definition end
END

你不说你的问题是什么。你有错误吗?哪一个?