触发器未在表中插入值

时间:2018-08-13 16:00:19

标签: mysql function triggers

我有以下trigger

CREATE TRIGGER Insert_Orders BEFORE INSERT ON `Orders`
FOR EACH ROW BEGIN
    INSERT INTO Payments (RestaurantPaymentInVAT, VATID) VALUES (
        (SELECT Get_RestaurantPaymentInVAT(NEW.`OrderID`)), 1);
END $$

但是,表结果窗口中的payments.RestaurantPaymentInVAT不会显示任何非空结果。全部都是null。但是:

当我将其作为独立查询进行测试

SELECT Get_RestaurantPaymentInVAT(NEW.`OrderID`)

它给出正确的值。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我假设OrderID被定义为自动递增。由于您使用的是BEFORE INSERT触发器,因此OrderID确实为NULL,因为尚未为其分配值。插入记录后,它将获得一个值。尝试更改为AFTER INSERT触发器,或显式提供OrderID的值。那应该解决它。