如何使用触发器在SQL中增加?

时间:2016-04-22 19:53:56

标签: php mysql sql

所以我有一张桌子,里面有一份美食清单,以及有多少餐厅都有这些美食。 (例如意大利语| 7)

我试图在phpMyAdmin中设置一个触发器,每次将新餐厅添加到数据库时都会增加总数。以下是我到目前为止的情况:

CREATE TRIGGER UpdateStats AFTER INSERT ON Restaurant
BEGIN
    UPDATE RestaurantStats SET TotalRestaurants = TotalRestaurants + 1 WHERE Cusine = NEW.cusine;
END;

但我一直收到一条错误消息,它告诉我它与我的语法有关。我哪里错了?我按照我看得很清楚的例子。

以下是错误消息:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN UPDATE RestaurantStats SET TotalRestaurants = TotalRestaurants + 1 WHERE' at line 2

3 个答案:

答案 0 :(得分:1)

您必须拥有for each row

CREATE TRIGGER UpdateStats 
AFTER INSERT ON Restaurant 
FOR EACH ROW 
    UPDATE RestaurantStats SET TotalRestaurants = TotalRestaurants + 1 WHERE Cusine = NEW.cusine;

答案 1 :(得分:1)

你需要使用FOR EACH ROW并摆脱BEGIN ... END这样:

CREATE TRIGGER UpdateStats AFTER INSERT ON Restaurant
FOR EACH ROW
    UPDATE RestaurantStats SET TotalRestaurants = TotalRestaurants + 1 WHERE Cusine = NEW.cusine;

BEGIN ... END仅用于同一触发器中的多个查询,需要重新定义终止字符。所以你的第一个;正在终止声明,并在没有END的情况下打开BEGIN。

答案 2 :(得分:0)

尝试使用"为每一行":

CREATE TRIGGER UpdateStats AFTER INSERT ON Restaurant
FOR EACH ROW
BEGIN
    UPDATE RestaurantStats SET TotalRestaurants = TotalRestaurants + 1 WHERE Cusine = NEW.cusine;
END;

Haven自己尝试过,所以不确定它是否有效......