【问题标题】:MySQL: Trigger Update with random value from another tables columnMySQL:使用来自另一个表列的随机值触发更新
【发布时间】:2021-05-26 17:18:00
【问题描述】:

是否可以创建一个触发器,该触发器在该行的值发生变化时使用另一个表列中的随机值更新该列。

在附图中,我有两个表,列表和用户。我希望 users.random 在用户表中的 first_name 或 last_name 随时更新/更改时使用 list.fruit 列中的新随机值进行更新。

如果 sam smith 更改为 andrew smith,那么我希望将梨更新为水果列表中的另一个随机水果。

这个例子已经被混淆了,但应该能解释我想要实现的目标。

【问题讨论】:

  • 显示一个例子。初始状态,最终状态。并定义什么是“来自另一个表列”。
  • 现在可以用我所做的编辑重新打开我的问题吗?
  • 我建议您创建一个小提琴(或至少为两个表添加 CREATE TABLE + INSERT INTO 脚本)。
  • @Akina,你能详细说明一下吗?我会谷歌它,但我从来没有听说过小提琴。与触发器相比有什么优势,或者小提琴建议是因为触发器是不可能的?谢谢!
  • 查看示例:dbfiddle.uk/…。制作你的小提琴,仔细检查,提供链接。

标签: mysql triggers


【解决方案1】:
CREATE TRIGGER trigger_test
BEFORE UPDATE
ON users 
FOR EACH ROW
SET NEW.random = ( SELECT fruits
                   FROM list
                   ORDER BY RAND() LIMIT 1);

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=7c2b825177893766c054676f05f8e3ca

【讨论】:

  • 谢谢,太好了!出于好奇,是否可以将相同的功能应用于生成的列而不是触发器?
  • @Kburgen9 否。生成的列不能使用子查询或非确定性函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2013-06-04
相关资源
最近更新 更多