我开始学习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/