问题描述
DELIMITER //
DROP FUNCTION IF EXISTS SaveMessage //
CREATE FUNCTION SaveMessage(msg VARCHAR(255),eid BIGINT(20),cdate DATETIME)
RETURNS INT
BEGIN
INSERT INTO db1.user_notification_message (`message`) VALUES (msg);
SET @C := (select db1.user_notification_message.id FROM user_notification_message ORDER BY id DESC LIMIT 1);
UPDATE db1.user_notification un INNER JOIN db1.entity_user eu ON eu.user_id = un.user_id SET user_notification_message_id = @C WHERE eu.entity_id = eid AND un.created_date = cdate;
RETURN @C;
END; //
DELIMITER ;
我写了这个函数来更新两个表。记录将插入到 user_notification_message 表中,同时其引用保存到 user_notification 表中。
select SaveMessage(msg,entity_id,created_date) as message_id FROM view1;
我正在使用视图在 user_notification_message 表中填充所需的结果。
如果我在没有更新查询的情况下运行此函数 user_notification_message 表将按预期填充。但是,如果我使用更新查询运行它,则只有一条记录会保存到 user_notification_message 表中,并且 user_notification 表上不会发生更新(这意味着它不会执行过去更新查询)。我单独测试了更新查询,效果很好。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)