代码之家  ›  专栏  ›  技术社区  ›  Amir Asyraf

MySQL触发器,用于根据另一个表的更改更新表

  •  0
  • Amir Asyraf  · 技术社区  · 10 年前

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

    我有一个数据库, 测验 ,包含两个表: 房间 和 预订 .

    在表格中 房间 有一列名为 保留状态 可能的值为0和1。 房间_id 是其主键。

    在表格中 预订 ,有一个 房间_id 列,它引用表中的room_id 房间

    基本上,我想创建一个触发器 保留状态 当表中有更改时,设置为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'
    

    我希望有人能给我一个合适的解决方案,谢谢。。。

    1 回复  |  直到 10 年前
        1
  •  1
  •   unutbu    10 年前

    而不是 NEW.reservation.room_id 使用 NEW.room_id 自从 NEW 已引用中的新行 reservation 桌子