包含连接的触发器

时间:2013-06-10 21:55:12

标签: mysql triggers

我想在包含联接的情况下执行触发器。

我需要,如果他被标记为非活动状态,则不允许插入机制。我有一个名为MecActiv的属性表machanic可以是活动的还是非活动的,我还有一个名为reparation的表,它具有表机制的外键。 如果关于机制的这个属性是不活动的,那个机制不能在表修复上,所以我需要一个带连接的触发器,我无法找到如何去做。

谢谢!

P.S:我需要Mysql中的代码

1 个答案:

答案 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,看看是否会阻止它。