我使用的是mysql 5.0版本。
我正在尝试创建一个触发器来检查另一个表中是否存在一个条目(Food的名称)。
我这样做了:
delimiter //
CREATE TRIGGER verifyExists BEFORE INSERT ON Sold
FOR EACH ROW
BEGIN
IF NEW.nameF not in (
select A.nameF
From Available D
where (NEW.nameF = A.nameF and NEW.nameR = A.nameR)
)
END IF;
END;
//
delimiter ;
这样做不行,为什么?
答案 0 :(得分:2)
你有几个错误:
delimiter //
CREATE TRIGGER verifyExists BEFORE INSERT ON Sold
FOR EACH ROW
BEGIN
IF NEW.nameF not in (
select A.nameF
From Available A -- CHANGED THE ALIAS TO A
where (NEW.nameF = A.nameF and NEW.nameR = A.nameR)
) THEN -- MISSING THEN
CALL `Insert not allowed`;
END IF;
END;
//
delimiter ;
如果你可以使用SIGNAL,这是最好的方法,但由于它只是在mysql 5.5中引入,你必须通过其他途径来实现。一种方法是调用不存在的函数,如上所示。来自this answer