gpt4 book ai didi

mysql - 是否有 mysql "multitable"触发器 - E.G.仅在所有表更新完成后才触发的触发器?

转载 作者:可可西里 更新时间:2023-11-01 07:09:44 25 4
gpt4 key购买 nike

Rough schema几个表有一个触发器,它在更新/插入时生成行的 json 对象表示。例如。 {"email": ..., "relations: N" } //<--an email.json column并将其存储在 json 列中

关系只是一个数字联系在一起(让我知道是否有一个词),它允许我将多个名字、电子邮件、电话、家庭联系在一起成为一个对象 -

例如the touchRelation.json column

{ 
"emails": [ {"email": 1@a.com },{"email: 2@a.com"},{"email: N@a.com"}],
"teles" : [ {"tele" : ... },{"tele : ...."},{"tele : ...."}],
"Names" : [ {"Name" : ... },{"Name : ...."},{"Name : ...."}],
"Homes" : [ {"Home" : ... },{"Home : ...."},{"Home : ...."}],
}

我遇到的问题是 1) 每次其他表之一获取数据 CRUD 时更新 touchRelations.json 会很浪费且效率低下,特别是如果同时更新多个表

2) 我可能无法依赖开发人员在每次查询后调用 update_Relations_json()。

有没有一种简单的方法可以判断一个或多个表是否已更新,并且仅在所有表的所有更新完成后才重新生成 relations.json?


一个可能的解决方案是创建一个“pending Updates”表,将信息存储在一个队列中,一个一个地插入/更新队列表中的数据到存储表,然后调用更新函数,但我这肯定不是最佳选择。

另一种选择是在数据库中创建一个 JSON 解析器,它读取完整的 json 关系(上面的大关系),更新表然后构建 json 对象,但这似乎是对数据库的不良使用。

最佳答案

enter image description here我能想到的最佳选择是创建一个默认值为 0 的“更新”元数据列。当我们更新电话、电子邮件、姓名或家庭时,元数据列更改为 1(表示更新未提交到关系 JSON 列)

接下来创建一个存储过程“request_relations_json()”来检查未决提交(“updates”元列中的 1)。如果没有更新,则将当前 relations.json 列返回给应用程序。如果有更新,重新生成json返回给应用。

它有点黑,但它不会在每次更新时都生成 json。我仍然希望有更优雅的解决方案。

关于mysql - 是否有 mysql "multitable"触发器 - E.G.仅在所有表更新完成后才触发的触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23516700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com