我想做一个包含连接的触发器。
我需要,如果机械师被标记为不活动,则不允许插入机械师。我有一个名为 MecActiv 的属性的表机制,它可以是活动的或非活动的,我还有一个名为 reparation 的表,它有一个表机制的外键。如果机械师上的这个属性是不活动的,那个机械师就不能在桌子上修理,所以我需要一个带连接的触发器,我找不到怎么做。
谢谢!
PS:我需要Mysql中的代码
尽管您没有发布实际的数据库架构,但它就在这里。
你不需要 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
),它基本上会做什么,并且它是分配NULL
给mechanic_id
违反NOT NULL
约束的情况。显然,您需要NOT NULL
对修复表进行约束才能使其正常工作。
这是SQLFiddle演示。最后取消注释INSERT
,看看它是否会阻止它。