1

我想做一个包含连接的触发器。

我需要,如果机械师被标记为不活动,则不允许插入机械师。我有一个名为 MecActiv 的属性的表机制,它可以是活动的或非活动的,我还有一个名为 reparation 的表,它有一个表机制的外键。如果机械师上的这个属性是不活动的,那个机械师就不能在桌子上修理,所以我需要一个带连接的触发器,我找不到怎么做。

谢谢!

PS:我需要Mysql中的代码

4

1 回答 1

0

尽管您没有发布实际的数据库架构,但它就在这里。

你不需要 aJOIN在你的情况下。您的触发器可能如下所示

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),它基本上会做什么,并且它是分配NULLmechanic_id违反NOT NULL约束的情况。显然,您需要NOT NULL对修复表进行约束才能使其正常工作。

这是SQLFiddle演示。最后取消注释INSERT,看看它是否会阻止它。

于 2013-06-10T22:36:09.790 回答