我正在尝试编写一个结合了插入和放大器的触发器。选择,我在网上找到了很多主题,但似乎没有一个与我的确切问题有关,也许我错过了我的结构?
这样做的目的是,如果在我们的审计日志中取消,那么我根据另一个表中的一系列业务逻辑定义取消原因,这个逻辑在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 ;
非常感谢任何帮助:)