我已经为这个看似简单的任务工作了几个小时,但没有运气。
我有一个数据库测试,其中包含两个表:房间和预订。
表 room 中有一个名为 reserved_status 的列,其可能值为 0 和 1。room_id 是其主键。
在表reservation中,有room_id列,它引用表room中的room_id
基本上,我想创建一个触发器,每当表保留发生更改(例如插入、更新或删除)时,该触发器都会将reserved_status更新为1。
以下查询实际上在 phpMyAdmin 中被接受:
DELIMITER $$
CREATE TRIGGER reserved_status_insert AFTER
INSERT ON
reservation FOR EACH ROW
BEGIN
UPDATE
room
SET
room_reserved = 1
WHERE
room_id = NEW.reservation.room_id ;
END $$
DELIMITER ;
但是,当我尝试执行插入操作时,它给出了以下错误:
Unknown column 'NEW.reservation.room_id' in 'where clause'
希望有人能给我一个合适的解决方案,谢谢...
最佳答案
使用 NEW.room_id
而不是 NEW.reservation.room_id
,因为 NEW
已经引用了 reservation 中的新行
表。
关于MySQL触发器根据另一个表的变化更新一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978084/