0

我在 MySQLQuantityInventory中有一个列,它从多个来源更新。我需要在表中的另一列QuantityLog上维护一个轨道,该列称为最后更新时间Quantity和执行它的源。类似这样的内容应该是QuantityLog列(文本类型)的内容(只需要最新的更新详细信息):

 <Log>
     <UpdateTime>2015-02-23 12:00:01 PM</UpdateTime>
     <Source> Feeder application</Source>
 </Log>

如果只需要更新时间,我知道如何使用触发器来做到这一点。但是,使用触发方法是否还有其他机制来获取源并使用它?

请注意,我仅尝试通过触发器执行此操作,因为使用我的应用程序执行此操作的任何其他机制将要求我更改所有进行此更改的应用程序,我不倾向于这样做。

4

1 回答 1

1

MySql 无法知道“feeder 应用程序”,除非有一个变量或表填充了该值。如果你有这个,很容易创建一个触发器,Inventory 在每次更改Quantity字段时将此信息更新到表中。

但是,如果您的应用程序使用唯一的 mysql 用户连接到数据库,您当然可以使用 TRIGGER 中的CURRENT_USER()内置函数。或者,CONNECTION_ID()在跟踪谁做了什么时可能会有所帮助。例如,您可以创建一个记录应用程序连接 ID 的新表。在该表中,您可以编写应用程序名称、PID 和其他内容。当然,这意味着通过在建立连接后添加适当的插入语句来稍微改变我们的应用程序。开销应该很小,因为通常连接保存在池中并且不会一直重新创建。

于 2015-07-05T09:33:40.487 回答