【问题标题】:How to get value before MYSQL update command?如何在 MYSQL 更新命令之前获取值?
【发布时间】:2018-07-19 00:59:02
【问题描述】:

我有一条线:

Update <Table> Set <Value> = @NewValue Where RecordID = @RecordID;

但是,现在我发现自己需要使用此值的更改来更新另一个表。显然我可以做一个单独的查询来获取原件,或者我可以在我最初阅读它时保存原件。不过,优雅的答案是以某种方式返回它。

(RecordID 是唯一的,不会返回多个值。)

【问题讨论】:

  • @SamM 那是在谈论在我的情况下不起作用的触发器 - 第二次更新需要访问三个字段,其中一个在此记录中找到,其他是在配置中定义,它们的值在另一个表中。

标签: mysql


【解决方案1】:

您可以在一个查询中更新两个表

UPDATE t1
CROSS JOIN t2
SET t2.<value> = t1.<value>,
    t1.<value> = @NewValue
WHERE t1.RecordID = @RecordID1
AND t2.RecordID = @RecordID2

如果两个表的行相关,则使用INNER JOIN 而不是CROSS JOIN,并将t2 条件放在那里。

【讨论】:

  • 几乎可以肯定 t2 中有两条记录需要更新(不同的是,不仅仅是我正在写的值)而且这只是当前使用情况,更改配置文件可能会更改数字受影响的记录。
  • 您可以将t2.RecordID = @RecordID2 更改为您想要查找受影响行的任何条件。
猜你喜欢
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多