MySQL TRIGGER使用SELECT,IF等INSERT INSFORE之前

时间:2017-05-04 16:30:11

标签: mysql

我正在尝试编写一个结合了插入和放大器的触发器。选择,我在网上找到了很多主题,但似乎没有一个与我的确切问题有关,也许我错过了我的结构?

这样做的目的是,如果在我们的审计日志中取消,那么我根据另一个表中的一系列业务逻辑定义取消原因,这个逻辑在SELECT中使用CASE&子查询。

我想扩展当前有效的以下触发器,并用我刚刚提到的SELECT查询替换SET cancellation_point ='test'元素。

DELIMITER $$

CREATE

    TRIGGER `cancellation_stage` BEFORE INSERT ON `log` 
    FOR EACH ROW 

BEGIN
IF (NEW.status='cancel' AND NEW.type='0') THEN
INSERT INTO cancellation_stage 
SET
id=NEW.id,
property_id=NEW.entity_id,
cancellation_date=NOW(),
cancellation_point='test';
END IF;
END;
$$

DELIMITER ;

我确实尝试使用此处的各种指导自行构建,但是,它只是不起作用。我把这个代码物理保存为触发器,但它没有填充数据库中的数据(我用下面的基本查询示例替换了我的SELECT):

  DELIMITER $$

CREATE
    TRIGGER `cancellation_stage` BEFORE INSERT ON `log` 
    FOR EACH ROW 

BEGIN
DECLARE cancellation_point VARCHAR(255);
SET cancellation_point = ( SELECT * FROM x);
IF (NEW.transition='cancel' AND NEW.entity_type='property') THEN
INSERT INTO cancellation_stage 
SET
id=NEW.id,
property_id=NEW.entity_id,
cancellation_date=NOW(),
cancellation_point=NEW.cancellation_point;
END IF;
END;
$$

DELIMITER ;

非常感谢任何帮助:)

0 个答案:

没有答案