我有两个表:
users
trainer
在users
表中,默认情况下我有一列is_trainer=false
`。
[当用户在表users
中输入信息并选择列is_trainer=true
时,我想在trainer
表中插入用户信息。
[当省略if条件时,在users
表中插入用户后,它将信息放置在trainer
表中,但是当我输入if条件时,它将无法工作!我认为它认为is_trainer
用于trainer
表而不用于users
表
我的代码:
BEGIN
IF NEW.is_trainer <> OLD.is_trainer THEN
INSERT INTO trainer(trainer_id, sport_id, fee_per_hour, experience, created_by)
VALUES(users.user_id, 3, '200$', 3, 6);
END IF;
RETURN NEW;
END;
这将无法正常工作:
IF NEW.is_trainer <> OLD.is_trainer THEN
在INSERT
触发器中,没有OLD
值,即伪表OLD
中的所有列均为NULL
。因此,您的表情可以归结为:
IF NEW.is_trainter <> NULL THEN
此条件永远不会为真,因为没有什么比NULL
不同,也不等于NULL
(要检查是否为空,您需要IS NULL
)。
根据您对要求的描述,我认为您想要:
IF NEW.is_traiter = true THEN
此外,您的INSERT
命令将引用未知关系users
,因此将不起作用。您可能想要:
INSERT INTO trainer(trainer_id,sport_id,fee_per_hour,experience,created_by)
VALUES(NEW.user_id, 3, '200$', 3, 6);
同样,您要插入trainer
的其他值也应来自伪表NEW
(例如created_by
)。