我开始学习SQL,并建立了房屋数据库,其中有一个房屋,房间,走廊等表格。我在房屋中有一列,称为NumberOfRooms,在客房中有一列,名为HouseName。

我试图触发一个触发器,以便在将房间添加到房屋中时,房屋属性“ NumberOfRooms”会增加。

这是我正在尝试的查询:

CREATE TRIGGER UpdateNoRooms AFTER INSERT AS
UPDATE Houses SET Houses.NumberOfRooms = SELECT COUNT(Room)
                                         FROM Rooms
                                         WHERE Rooms.HouseName = Houses.Name;


,但无法正常工作。

这是我收到的错误消息:


  错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在第1行的'AS UPDATE Houses SET Houses.NumberOfRooms = SELECT COUNT(Room) FROM Rooms WHERE'附近使用正确的语法


关于如何解决此问题的任何想法?先感谢您

最佳答案

这是一个快速版本-
您已经非正规化了-这不是一个好主意。相反,房间数应该留给查询时间。

CREATE TRIGGER UpdateNoRooms AFTER INSERT AS
BEGIN
    UPDATE Houses h
        SET h.NumberOfRooms = h.NumberofRooms+1 WHERE :new.HouseName = h.Name;
END;

关于mysql - SQL-触发更新错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41251689/

10-10 07:44