【问题标题】:Mysql AFTER UPDATE trigger with IF-THEN condition, but no data insertion带有 IF-THEN 条件的 Mysql AF​​TER UPDATE 触发器,但没有数据插入
【发布时间】:2020-05-29 08:47:49
【问题描述】:

我使用 IF-THEN 条件在表 manage_transaction 上创建了以下 AFTER UPDATE 触发器,以便将特定数据插入表 manage_site_income_details 但是,manage_site_income_details 中既没有插入一行,也没有遇到任何错误。但是,我多次修改了我的 IF-THEN 条件,但都没有成功。

DROP TRIGGER IF EXISTS
        `upon_subscription_payment`;
CREATE DEFINER = `test-db-ru-admin`@`%` TRIGGER `upon_subscription_payment` 
AFTER UPDATE
    ON
        `manage_transaction` 
FOR EACH ROW 
    IF 
       OLD.about LIKE 'SUB' AND NEW.status = 'Completed' 
    THEN
    INSERT INTO 
                manage_site_income_details
    VALUES(
        NULL,
        OLD.t_id,
        OLD.txn_id,
        'SUB_Fee',
        OLD.fee,
        NOW());
    END IF

【问题讨论】:

  • 好消息 - 您的代码运行良好..
  • 但是,正如我提到的,manage_site_income_details 中没有插入任何行
  • 当我测试它时它确实如此 - 你可以改进你的问题..(你知道其余的)..
  • 这个问题和你之前的两个问题有什么不同?

标签: mysql if-statement triggers insert


【解决方案1】:

这里没问题或https://www.db-fiddle.com/f/8UYVnC2xQsWuSC9VBZz6BN/0

DROP TRIGGER IF EXISTS T;
drop table if exists `manage_transaction`,manage_site_income_details;
create table manage_transaction(t_id int,txn_id int,fee int,about varchar(3),status varchar(15));
create table manage_site_income_details(id int,t_id int,txn_id int,txt varchar(20),fee int,dt datetime);
insert into manage_transaction values (1,1,10,'sub',null);

CREATE  TRIGGER T 
AFTER UPDATE ON `manage_transaction` 
FOR EACH ROW 
    IF OLD.about LIKE 'SUB' AND NEW.status = 'Completed' THEN
       INSERT INTO manage_site_income_details
       VALUES(
        NULL,
        OLD.t_id,
        OLD.txn_id,
        'SUB_Fee',
        OLD.fee,
        NOW());
    END IF;

update manage_transaction
    set status = 'completed';

select * from manage_site_income_details;

+------+------+--------+---------+------+---------------------+
| id   | t_id | txn_id | txt     | fee  | dt                  |
+------+------+--------+---------+------+---------------------+
| NULL |    1 |      1 | SUB_Fee |   10 | 2020-05-29 09:58:04 |
+------+------+--------+---------+------+---------------------+
1 row in set (0.001 sec)

【讨论】:

  • 您已将您的 about 字段设置为 sub,但正如他使用的那样,我认为这不仅仅是 sub,它是 sub-mike 或类似的东西。如果您将 about 设置为 sub 以外的其他内容,它将不会插入。
  • @Mike 拥有 OPs 个人资料的人会犯这样的错误吗?
  • 我遇到两个问题: 1) Mysql 在使用 NOW() 的那一行显示错误。 2)当manage_transaction中的'status'字段已经'Completed'时,应该触发我的触发器T。
  • 我已经意识到@Mike 无法理解我的问题。但是,还是谢谢你。
  • @P.Salmon 已经证明触发器没有问题,我自己也运行了他的脚本,一切都很好,它没有错误,它确实插入了。您能否显示一些您希望触发插入的 manage_transaction 数据?并回答“具有 OPs 个人资料的人会犯这样的错误吗?”这个问题。他们用like代替=,所以有可能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2012-12-02
  • 2012-05-09
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多