我想在包含联接的情况下执行触发器。
我需要,如果他被标记为非活动状态,则不允许插入机制。我有一个名为MecActiv的属性表machanic可以是活动的还是非活动的,我还有一个名为reparation的表,它具有表机制的外键。 如果关于机制的这个属性是不活动的,那个机制不能在表修复上,所以我需要一个带连接的触发器,我无法找到如何去做。
谢谢!
P.S:我需要Mysql中的代码
答案 0 :(得分:0)
虽然您没有发布实际的数据库架构,但它仍然存在。
您的案件中不需要JOIN
。您的触发器可能如下所示
CREATE TRIGGER tg_reparation_insert
BEFORE INSERT ON reparation
FOR EACH ROW
SET NEW.mechanic_id =
(
SELECT IF(IFNULL(mecactiv, 0) = 0, NULL, NEW.mechanic_id)
FROM mechanic
WHERE id = NEW.mechanic_id
);
如果具有正在插入的ID的机制处于非活动状态(mecactiv = 0
),它看起来基本上是什么情况,并且它会NULL
指定mechanic_id
违反NOT NULL
1}}约束。显然,您需要在修复表上设置NOT NULL
约束才能使其正常工作。
这是 SQLFiddle 演示。 取消评论最后INSERT
,看看是否会阻止它。