【问题标题】:A question about updating a table through PhpMyAdmin关于通过 PhpMyAdmin 更新表的问题
【发布时间】:2011-06-28 14:43:11
【问题描述】:

我是数据库初学者,在学习过程中遇到了一个问题。

我现在要通过 phpMyAdmin 导入一个文本文件来更新我的数据库的一个表。 除了处理具有相同 customer_ID 的行之外,一切都很好。

该行有一个名为“customer_ID”的字段,我不能将其设为主键,因为用于填充数据库的初始文本文件包含单个 customer_ID 的多行,因此数据库必须允许一个用户 ID 多行.

我用导入文本文件填充了数据库,没有错误。但是,现在我需要用更新文本文件更新数据库,更新文本文件中的 customer_id 都已经存在(填充)在数据库中,所以如果我用这个更新的文本文件更新数据库(通过“导入” PhpMyAdmin 中的函数),具有相同 customer_ID 的现有行将不会被更新,但会创建另一个具有相同 customer_ID 的行,这不是我想要的。

我认为这是一个两难的问题,如果我可以将 customer_id 设置为主键,更新过程将完美运行,但由于我需要在数据库填充过程中允许 customer_id 出现在多行中,所以我无法制作customer_id 一个主键。

请原谅这个琐碎的问题。不知道专家是否可以给我一些建议或一些相关的阅读资料?提前感谢您的帮助。

【问题讨论】:

  • 在进行更新之前会删除所有行吗?还是你想保留它们?
  • @paul,是的,我必须保留它们,这是一个充满客户详细信息的数据库。它在每个月的 1 日用初始文本文件填充,然后在月中,我需要用一个小得多的更新文本文件来更新它。
  • 您说“现在将更新具有相同 customer_ID 的现有行,但将创建具有相同 customer_ID 的另一行”,但我认为这不会发生。如果您正在插入,则会获得新行,如果您正在更新,则不会获得新行,但旧行会被更改。
  • 抱歉打错了!应该是“不会更新”。

标签: mysql sql database phpmyadmin


【解决方案1】:

您需要使您的更新文件遵循这种格式:

UPDATE table SET field1 = value, field2 = value WHERE customer_ID = existing value

但是,如果您有多行具有相同的客户 ID,这将更新所有行,这可能不是您想要的。所以你需要另一个 id 字段(如 Ray 所说),它是唯一的,并使用该 id 进行更新

...WHERE id = existing value

【讨论】:

    【解决方案2】:

    我认为最简单的方法是添加一个额外的标识符字段。 在“customer_id”旁边添加一个名为“id”的文件,并将“id”设为主要。

    【讨论】:

    • 这是否表明导入文本文件需要增加另一个字段?
    • 是的,那么您必须在导入文本文件中添加一个名为“id”的字段。当您将其设为自动增量时,它将自动计算添加到数据库中的每一行。
    猜你喜欢
    • 2019-07-13
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多