【发布时间】:2015-12-30 09:23:31
【问题描述】:
我在更新同一个表的另一列后尝试更新表的字段时遇到了一些问题。 我知道我不能在我正在更新的同一张表上执行触发器,但我需要找到一个技巧来做到这一点。
比如我的表是:
ParentName | Age | Update_date
John 12 2014-12-01
Eric 23 2014-4-01
Jack 32 2014-5-01
Jill 33 2014-2-01
更新age 后,我需要更新update_date,我的真实情况是我无法直接从更新查询中执行此操作,因为我希望此规则能够正常工作,而不取决于我如何更新表格。
我正在尝试使用存储过程来做到这一点,但我不太了解它们。
有人有任何想法或可以向我解释如何使用经过处理的程序来做到这一点?
【问题讨论】:
-
您可以在更新触发器之前使用,如果旧日期不等于新日期,则将
Update_date设置为curdate() -
使用 before_update 触发器它给了我这个错误:Can't update table 'parent_table' in stored function/trigger 因为它已被调用此存储函数/触发器的语句使用
-
你可以改变表的结构。将 CURRENT_DATE ON UPDATE 设置为默认值。每当您的行更新时,其值将按当前日期更改。这样就不需要触发器也不需要更新查询
-
不,我不能,因为我可以将一个人的
ParentName从 John 更改为 David,但在这种情况下,我不想更改update_date -
是的,你是对的。这不仅适用于年龄......
标签: mysql stored-procedures triggers sql-update