【问题标题】:mysql triggering is not workingmysql触发不起作用
【发布时间】:2013-04-17 03:16:09
【问题描述】:

我有一个名为 login 的表,其中包含 3 个字段 'id'、'token' 和 'status' 。 id 是自动生成的。每当使用触发器插入该表时,我想将自动生成的“id”存储在“状态”字段中。我可以在触发器后使用插入来做到这一点吗?这是我第一次使用触发器,所以任何帮助将不胜感激.我的代码在下面给出..

CREATE TRIGGER ins_masterid AFTER INSERT ON `login`
FOR EACH ROW BEGIN
SET NEW.status = NEW.id;

【问题讨论】:

  • 您遇到错误了吗?
  • yup.Getting an error.. :(

标签: mysql triggers


【解决方案1】:

试试这个

CREATE TRIGGER ins_masterid
BEFORE INSERT ON login 
FOR EACH ROW SET new.status = (select max(id)+1 from login);

但您应该手动更新第一行的状态。

【讨论】:

    【解决方案2】:

    当您想在触发器中使用“SET NEW.column”时,请注意,您不能将它与 AFTER 操作一起使用,而必须在操作之前使用它。

    delimiter |
    
    CREATE TRIGGER ins_masterid BEFORE INSERT ON `login`
    FOR EACH ROW BEGIN
    SET NEW.status = NEW.id;
      END;
    |
    
    delimiter ;
    

    【讨论】:

    • 我试过这个。但状态字段总是得到'0'。怎么办?
    • 是的,你说得对。我在这里做了一些搜索,到目前为止我发现的唯一解决方案是这个相关问题:stackoverflow.com/questions/1211792/…。祝你好运!
    猜你喜欢
    • 2017-04-22
    • 2019-01-17
    • 2012-09-04
    • 2013-04-26
    • 1970-01-01
    • 2013-02-08
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多