gpt4 book ai didi

MySQL 在当前 session 期间为所有 INSERTS 设置一个字段值

转载 作者:行者123 更新时间:2023-11-29 03:11:51 24 4
gpt4 key购买 nike

我正在用 C 语言开发一个系统,该系统将更新提交到 MySQL 数据库中。客户端并不总是在线,因此当服务器不可访问时,应用程序会将要执行的 SQL 命令保存到 *.sql 中。

我正在考虑将一个名为 late_commit 的 BOOLEAN 字段添加到所用的表中,这样我就可以知道这些表稍后在连接恢复时已插入到数据库中。

我可以更改程序中的编程逻辑以在插入查询中包含 late_commit 字段,但我宁愿将其默认值设置为 false 并且仅在以下情况下将其设置为 true .sql 文件被执行。

我想过用 alter 语句插入插入,但这看起来有点笨拙并且性能不佳。

我从未使用过触发器,但从我在此 SO question 中看到的情况来看他们可以工作。然而,它们似乎不是临时的或本地的 session ,这会干扰来自其他客户端的并发插入。

您是否知道您是如何/将如何做到这一点的?不一定是要使用的查询,而是最适用的技术/方法。

编辑:我认为一个解决方案,如果没有其他解决方案,可能是创建一个具有相同结构和 late_commit 默认为 true 的临时表,将数据插入其中,然后复制到主表中.

注意:我用我发现的一些方法添加了一个答案。不过,我仍在寻找永久解决方案。所以请如果您知道如何做得更好,请发表评论或回答。谢谢!

最佳答案

我将为 late_commit 设置默认的 false 并让所有正常代码忽略它的存在。然后我会让将 SQL 写入文件的代码通过注入(inject) late_commit 内容的“装饰器”,例如普通 SQL:

insert into table1 (col1, col2) values (val1, val2);

但是写入文件时:

insert into table1 (late_commit, col1, col2) values (true, val1, val2);

这样一来,只有一段代码需要了解它。用于找出将额外位放在哪里的 SQL 解析相当简单。

关于MySQL 在当前 session 期间为所有 INSERTS 设置一个字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994116/

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