【问题标题】:update existing record in MySQL when inserting插入时更新 MySQL 中的现有记录
【发布时间】:2016-08-09 13:35:34
【问题描述】:

我在 MySQL 数据库中有一个表,其中包含以下字段:

cid
number
date
code

cidnumber 是键。 来自第一个date 的另一个表中的每天数据都使用php 脚​​本插入到此表中。 code 字段在源表中是可更新的,如果在将记录插入目标时代码已更改,我想更新目标表中的现有记录。我的意思是我不想将更新的数据作为新行插入,而是更新当前记录。

我该怎么做?

【问题讨论】:

  • 我有点得到你想要的。那么有什么问题呢?
  • @BeetleJuice 在 MySQL 中插入更新数据时,我不知道如何更新现有行。

标签: php mysql


【解决方案1】:

您可以使用 MySQL 的 INSERT INTO ... ON DUPLICATE KEY UPDATE 来做到这一点。

为此,您必须设置一个 UNIQUE 索引,以便 MySQL 产生错误(因为记录存在),然后移动到 UPDATE 部分。

在你的情况下,我假设这个键是UNIQUE(cid, number, date)

给定您当前的表,查询将是这样的:

INSERT INTO your_table_name 

(cid, number, date, code) 

VALUES 

(1, 2, '2016-08-09', 'code') 

ON DUPLICATE KEY SET code = 'code';

相应地调整列名和值。

Documentation about ON DUPLICATE KEY UPDATE

【讨论】:

    【解决方案2】:
    IF EXISTS...
    THEN
    UPDATE ... SET ....
    ELSE 
    INSERT INTO ...
    

    使用存储过程。

    【讨论】:

      猜你喜欢
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2014-02-27
      • 2020-07-19
      • 1970-01-01
      相关资源
      最近更新 更多