所以我有一张桌子,里面有一份美食清单,以及有多少餐厅都有这些美食。 (例如意大利语| 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
答案 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自己尝试过,所以不确定它是否有效......