【问题标题】:SQL Trigger "AFTER INSERT ON" not only not working, but stops main insertSQL触发器“AFTER INSERT ON”不仅不起作用,而且停止主插入
【发布时间】:2018-03-26 15:38:23
【问题描述】:

我正在使用 PhpMyAdmin 在 000webhost 托管的 MySql 数据库上工作。 我现在的数据库非常简单。我有 2 个表 accountslvl_time 通过关系 (accounts)id->user_id(lvl_times) 连接。每次在accounts 中创建新字段时,我都需要在lvl_times 中创建行。 lvl_times 中的新字段必须与新创建的帐户具有 user_id 相同。

我尝试使用“AFTER INSERT ON”触发器的 coupe 版本。不仅它不起作用,而且还会触发停止主插入,并且新帐户在插入后以某种方式延迟。 例如,我尝试了这个触发器:

   CREATE TRIGGER createEmptylvlfields 
         AFTER INSERT ON accounts 
         FOR EACH ROW 
            INSERT INTO lvl_times (user_id) SELECT id FROM inserted

我将我的简单数据库的方案附加为图像

请帮忙

【问题讨论】:

  • 这在我看来不像 MySQL 代码。
  • 是的,对不起,我很失望,可能还使用了 SQLServer 中另一篇文章的一些解决方案。

标签: mysql sql triggers phpmyadmin


【解决方案1】:

您的触发器应该是:

    CREATE TRIGGER createEmptylvlfields 
     AFTER INSERT ON accounts 
     FOR EACH ROW 
        INSERT INTO lvl_times (user_id) 
          VALUES (NEW.id);

是的,如果触发器失败,则插入回滚。

【讨论】:

  • 我的触发器出现 #1064 语法错误:/ "near 'NEW.id)' at line 5"
  • 好的,我将您的解决方案更改为 INSERT INTO lvl_times SET user_id =NEW.id 并且成功了,谢谢
  • 对不起我的小错误。我忘记了价值这个词。让我解决它。
猜你喜欢
  • 2017-10-04
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2019-08-28
相关资源
最近更新 更多