我的 MySQL 表 Inventory
中有一个列 Quantity
,它从多个源更新。我需要在名为 QuantityLog
的表中的另一列上维护对 Quantity
的上次更新时间和执行此操作的源的跟踪。 QuantityLog
列(文本类型)的内容应该是这样的(只需要最新的更新详细信息):
<Log>
<UpdateTime>2015-02-23 12:00:01 PM</UpdateTime>
<Source> Feeder application</Source>
</Log>
如果只需要更新时间,我知道如何使用触发器来做到这一点。 但是,使用触发方法是否还有其他机制来获取源并使用它?
请注意,我只是尝试通过触发器执行此操作,因为使用我的应用程序执行此操作的任何其他机制都将要求我在所有进行此更改的应用程序中进行更改,而我不倾向于这样做。
最佳答案
MySql 无法知道“供给应用程序”,除非有一个变量或表填充了该值。如果您有此信息,则可以轻松创建一个触发器,以便在 Quantity
字段每次发生更改时将此信息更新到 Inventory
表中。
但是,如果您的应用程序使用唯一的 mysql 用户来连接数据库,您当然可以使用 CURRENT_USER() TRIGGER 中的内置函数。或者,CONNECTION_ID()在跟踪谁做了什么时可能会有所帮助。例如,您可以创建一个新表来记录应用程序的连接 ID。在该表中,您可以写入应用程序名称、PID 和其他内容。当然,这意味着通过在建立连接后添加适当的插入语句来稍微改变我们的应用程序。开销应该很小,因为连接通常保存在池中并且不会一直重新创建。
关于mysql - MySQL中某列的更新来源和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228658/