MySQL触发器根据另一个表的变化更新一个表

标签 mysql sql triggers sql-update

我已经为这个看似简单的任务工作了几个小时,但没有运气。

我有一个数据库测试,其中包含两个表:房间预订

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/

相关文章:

sql - MS SQL 2008 - 如何将 xml 值转换为 ms sql 表中的行集合?

postgresql - Postgres 触发器

MySQL:在选择语句中自动增加临时列

MySQL 模拟行数

mysql - 如何使用 mysql Recipe ?

mysql - 使用 t2 中的字段在 t1 上插入之前触发

mysql - MySql触发器语法错误: While_Sym

MySqlHelper 未将查询参数推送到 MySQL

sql - 从数据库中删除记录的替代方法?

sql - 如何将 SQL 查询转换为 Odata 查询