Mysql Триггер AFTER UPDATE с условием IF-THEN, но без вставки данных - PullRequest
0 голосов
/ 29 мая 2020

Я создал следующий триггер AFTER UPDATE для таблицы manage_transaction , используя условие IF-THEN, чтобы вставить указанные c данные в таблицу 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

1 Ответ

0 голосов
/ 29 мая 2020

Здесь проблем нет или 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)
...