MariaDB 10.4.13
1.
CREATE TABLE IF NOT EXISTS `zm_sman_updt` (
`sman_id` INT(11) NOT NULL DEFAULT 0,
`updated_at` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`sman_id`) USING HASH
)
ENGINE = MEMORY;
CREATE TABLE `ss_lineup_cell` (
...
`sman_id` MEDIUMINT(8) UNSIGNED NULL DEFAULT NULL,
...
)
ENGINE=InnoDB;
CREATE PROCEDURE `update_at_sman`(param_sman_id INT, mx_time_flash INT)
MODIFIES SQL DATA
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
SET @update_at_sman_error = 123;
INSERT INTO `zm_sman_updt` (`updated_at`, `sman_id`)
VALUES (CURRENT_TIMESTAMP(), param_sman_id)
ON DUPLICATE KEY UPDATE `updated_at`=VALUES(`updated_at`);
...
CREATE TRIGGER `update_lineup_cell`
AFTER UPDATE ON
ss_lineup_cell FOR EACH ROW
BEGIN
IF NEW.sman_id <> OLD.sman_id THEN
CALL update_at_sman(NEW.sman_id, 180);
END IF;
END
My application sends these commands
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
...
INSERT INTO `ss_lineup_cell` (`lineup_id`, `cell_id`) VALUES (17040, 1)
...
UPDATE `ss_lineup_cell` SET `sman_id`=1188 WHERE (`lineup_id`=17040) AND (`cell_id`=1)
...
COMMIT;
ss_lineup_cell.sman_id is 1188
But zm_sman_updt table is empty
If I
CALL update_at_sman(1188, 180)
from sql client then zm_sman_updt contains appropriated new row
Triggers plus MEMORY tables inside transaction aren't working? I didn't find it in mysql's documentation...
Triggers plus InnoDB tables inside transaction are working ok, I have some such the consruction which update user balances after update payments