MALOUDA-PSA 2025-03-09 20:41 采纳率: 85.6%
浏览 4

MySQL触发器的问题2


DELIMITER $$

CREATE TRIGGER update_fxj_before_update
after UPDATE ON fxj
FOR EACH ROW
BEGIN
    -- 仅当 stknew 发生变化时执行
    IF NEW.stknew <> OLD.stknew OR (NEW.stknew IS NULL AND OLD.stknew IS NOT NULL) OR (NEW.stknew IS NOT NULL AND OLD.stknew IS NULL) THEN
        -- 更新 c2exp12 的逻辑
        IF old.expma12 = 0 THEN
            SET c2exp12 = 100;
        ELSE
            SET c2exp12 = (NEW.stknew - NEW.expma12) / NEW.expma12 * 100;
        END IF;

        -- 更新 c2exp50 的逻辑
        IF old.expma50 = 0 THEN
            SET c2exp50 = 100;
        ELSE
            SET c2exp50 = (NEW.stknew - NEW.expma50) / NEW.expma50 * 100;
        END IF;
    END IF;
END$$

DELIMITER ;

1193 - Unknown system variable 'c2exp12'
时间: 0.011s

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-09 20:42
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    MySQL 触发器的问题2

    你创建了一个名为 update_fxj_before_update 的触发器,它将在 fxj 表的更新操作之前执行。触发器的代码如下:

    DELIMITER $$
    
    CREATE TRIGGER update_fxj_before_update
    after UPDATE ON fxj
    FOR EACH ROW
    BEGIN
        -- 代码块
    END$$
    

    问题:你想在触发器中执行什么操作?例如,更新其他表、发送邮件、日志记录等?

    如果你想在触发器中执行某个操作,可以在 BEGINEND 之间编写相应的 SQL 语句。例如,如果你想在更新 fxj 表时同时更新 another_table 表,可以使用以下代码:

    UPDATE another_table
    SET column1 = NEW.column1, column2 = NEW.column2
    WHERE id = NEW.id;
    

    其中,NEW 是一个系统表,用于访问触发器中的新记录。

    如果你需要更多帮助,请提供更多信息或代码块。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月9日