在MySQL中,当更新同一行中的另一列时,如何自动为一列设置值?

在MySQL中,当更新同一行中的另一列时,如何自动为一列设置值?,mysql,sql,sql-update,Mysql,Sql,Sql Update,对于下面的示例表,是否有方法将该表配置为在更新时使用值列中的数据自动更新PreviousValue列 table Settings ( Setting varchar(255), Value varchar(255), PreviousValue varchar(255) ) 如果没有触发器,您也可以通过以下方式实现: UPDATE Settings SET PreviousValue = Value, Value = :new_value WHERE Setting

对于下面的示例表,是否有方法将该表配置为在更新时使用值列中的数据自动更新PreviousValue列

table Settings
(
    Setting varchar(255),
    Value varchar(255),
    PreviousValue varchar(255)
)

如果没有触发器,您也可以通过以下方式实现:

UPDATE Settings SET PreviousValue = Value, Value = :new_value WHERE Setting = :setting

如果没有触发器,您也可以通过以下方式实现:

UPDATE Settings SET PreviousValue = Value, Value = :new_value WHERE Setting = :setting

当然,使用。您可以使用触发器执行此操作:当然,使用。您可以使用触发器执行此操作:是,但请确保在将新值分配给
值之前设置
上一个值
(如本例中@xdazz所做),否则新值将分配给两列(这是MySQL与标准SQL的特殊偏差的另一个示例)。是的,但在将新值分配给
值之前,请确保设置
先前的值
(如本例中@xdazz所做),否则新值将分配给两列(这是MySQL与标准SQL的特殊偏差的另一个示例)。谢谢。我使用了这个,它工作了。我还对它进行了一些修改,使
PreviousValue
字段仅在
Value
更新时(而不是在任何其他字段更新时)才会更新。如果不更新(NEW.Value.OLD.Value)然后设置NEW.PreviousValue=OLD.Value;END-IFThanks。我使用了它,它起了作用。我还对它进行了一些修改,使
PreviousValue
字段仅在
Value
更新时更新(而不是在任何其他字段更新时)。如果不更新(NEW.Value-OLD.Value),则设置NEW.PreviousValue=OLD.Value;END-IF