【发布时间】:2019-03-03 03:56:10
【问题描述】:
我有一个应该可以工作的触发器,但它不起作用。
BEGIN
DECLARE `refresh` VARCHAR(256);
SET `refresh` = concat((SELECT `refresh` FROM `mobile_app_drivers` WHERE `id` = 1), '&');
UPDATE `mobile_app_drivers` SET `refresh` = @refresh WHERE `id` = 1;
END
执行时,单元格**refresh**仍然广播一个空字符串。
//我如何创建它
DROP TRIGGER IF EXISTS `SET_UNIQUE_KEY`;
CREATE DEFINER=`root`@`localhost` TRIGGER `SET_UNIQUE_KEY` AFTER UPDATE ON `mobile_app_orders` FOR EACH ROW
BEGIN
DECLARE `refresh` VARCHAR(256);
SET `refresh` = concat((SELECT MAX(`refresh`) FROM `mobile_app_drivers` WHERE `id` = 1), '&');
UPDATE `mobile_app_drivers` SET `refresh` = @refresh WHERE `id` = NEW.driver;
END
我需要,当更新表中的任何记录时,从表 mobile_app_drivers 中的值 refresh 添加一个新的子字符串。
谢谢!
【问题讨论】:
-
这不是触发器的定义方式。您需要定义该触发的操作,例如:
before insert、after update等 -
我更新了帖子
-
我添加了如何创建触发器的示例
-
你为什么用
@refresh。它是会话变量,之前没有定义过。所以它只会被认为是空的。
标签: mysql sql database triggers