【问题标题】:MYSQL - Simple after insert trigger won't fireMYSQL - 插入触发器后简单不会触发
【发布时间】:2012-10-02 08:05:42
【问题描述】:

这里我有以下触发器:

USE dbsspf;

DELIMITER $$

CREATE
DEFINER = 'root'@'localhost'
TRIGGER TR_ASSIGN_PAGEINDEX
AFTER INSERT
ON LIB_RECORDS
FOR EACH ROW
BEGIN

  UPDATE LIB_RECORDS
  SET
  PAGE_INDEX = 13;


END
$$

DELIMITER ;

如您所见,我只是在更新触发器中的表格。但是,当我插入新记录时,触发器不会触发。你能告诉我我错过了什么吗?

【问题讨论】:

    标签: mysql sql triggers


    【解决方案1】:

    B.5.9:触发器可以访问表吗?

    触发器可以访问自己表中的旧数据和新数据。触发器 也可以影响其他表,但不允许修改 已被(用于读取或写入)的表 调用函数或触发器的语句。

    http://dev.mysql.com/doc/refman/5.5/en/faqs-triggers.html#qandaitem-B-5-1-9

    换句话说,LIB_RECORDS 上的触发器无法在 LIB_RECORDS 上写入其他行。

    【讨论】:

    • 感谢您提供非常重要的信息。那么在这种情况下你建议我做什么呢?
    • 不,我需要的正是我试图在触发器中实现的。我需要更改插入新记录的同一张表的所有记录的 PAGE_INDEX 列。
    • ...将其更改为13。这和创建一个只读的NOT NULL DEFAULT 13 列一样,不是吗?
    • 但也不一定是13条,会根据表中的记录数而有所不同。
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多