【问题标题】:mysql triggers have some issue in updating my tablemysql 触发器在更新我的表时有一些问题
【发布时间】:2011-07-22 20:16:48
【问题描述】:

嗨 我创建了一个触发器,我想在另一个字段中插入时更新一个表字段。但我不知道它应该如何知道它更新在此处插入的同一用户行是一些代码和数据库 senerio

--> admin_reg_abr

'id    course_limit   username
10          0             ahmad '

注意:id 是主键

--> 国外课程

'id    uni_id   username
1        10        ahmad'

注意:uni_id 是外键或与 admin_reg_abr 中的 id 相同。

我为触发器编写了以下代码:

如果存在则删除触发器 ahmad.AI_course_each//

创建触发器 ahmad.AI_course_each 在 ahmad.abroad_course 上插入之后 每一行开始

更新 admin_reg_abr SET admin_reg_abr.course_limit = admin_reg_abr.course_limit + 1 在哪里 admin_reg_abr.id = new.id;结束 //

我想更新相同的 id 如何在表中插入,但它不起作用。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你不是说:

    DROP TRIGGER IF EXISTS ahmad.AI_course_each//
    
    CREATE TRIGGER ahmad.AI_course_each 
    AFTER INSERT ON ahmad.abroad_course FOR EACH ROW
    BEGIN
        UPDATE admin_reg_abr SET 
           admin_reg_abr.course_limit = admin_reg_abr.course_limit + 1 
        WHERE admin_reg_abr.id = new.uni_id; 
    END //
    

    请注意,在您的代码中 NEW.id 指向 admin_reg_abr 表中的任何位置

    还有一件事。您正在谈论在 UPDATE 上触发触发器,因此,您可能需要另一个触发器:

    DROP TRIGGER IF EXISTS ahmad.AI_course_each//
    
    CREATE TRIGGER ahmad.AI_course_each 
    AFTER UPDATE ON ahmad.abroad_course FOR EACH ROW
    BEGIN
        UPDATE admin_reg_abr SET 
           admin_reg_abr.course_limit = admin_reg_abr.course_limit + 1 
        WHERE admin_reg_abr.id = new.uni_id; 
    END //
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多