我有错误“#1363 - DELETE 触发器中没有新行”

I have error "#1363 - There is no NEW row in on DELETE trigger "

我有 table "book" 和 "store_order" 有关系

我想制作触发器(但它包含错误):

DELIMITER $$

CREATE TRIGGER t1 
before delete ON store_order
FOR EACH ROW 
BEGIN

    update book set number = number + NEW.quantity where ISBN = NEW.ISBN;

END
$$

DELIMITER ;
DELIMITER $$
CREATE
    TRIGGER t2 AFTER delete 
    ON library.store_order
    FOR EACH ROW BEGIN

        update library.book 
        set library.book.number = (library.book.number + OLD.quantity)
        where library.book.ISBN = OLD.ISBN;

    END$$
DELIMITER ;

如果要获取已删除的对象,请使用 OLD 而不是 NEW。

以我的案例为例。我正在通过调用

获取新添加角色的 ID

NEW.id

并在删除时通过调用

获取相同字段的值

OLD.id

示例:

DELIMITER $$
CREATE TRIGGER after_insert_role
AFTER INSERT ON role FOR EACH ROW
 BEGIN
   INSERT INTO `sync_mapping`
 (`operation_type`, `table_name`, `oid`, `end_point`) 
  VALUES
 ('insert', 'role', NEW.id, 'new/role');
END $$


 DELIMITER $$
  CREATE TRIGGER after_delete_role
  AFTER DELETE ON role FOR EACH ROW
   BEGIN
    INSERT INTO `sync_mapping` (`operation_type`, `table_name`, `oid`, `end_point`)        VALUES
  ('delete', 'role', OLD.id, 'delete/role');
END $$

每当我们删除数据时 使用

OLD. instead of NEW.

CREATE TRIGGER user_history_delete AFTER DELETE ON user FOR EACH ROW INSERT INTO user_history(action , name ) VALUES ("Delete" , OLD.name );