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

时间:2015-06-01 15:36:52

标签: mysql sql phpmyadmin

我有表“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 ;

2 个答案:

答案 0 :(得分:2)

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 ;

答案 1 :(得分:0)

当您想获取已删除的对象时,请使用 OLD 而不是 NEW。

以我的情况为例。我通过调用获取新添加的角色的 id

<块引用>

新.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 $$