不使用主键时在 mySQL 数据库策略中更新/更新记录

问题描述 投票:0回答:1

我是数据库新手,面临挑战。我正在将订购系统连接到 具有客户端和订单表的数据库,如下所示:

客户。 订购。
id(主键) order_id(主键)
名字 金额
电子邮件 电子邮件外键
电话 系统_订单_id
地址 -

我遇到以下情况不知道如何处理: 我从我们的订单系统收到订单,其中包含以下信息:

  • 系统_订单_id
  • 金额
  • 电子邮件
  • 电话
  • 名字

我想检查客户在我们的数据库中是否有记录。 如果没有,请在数据库中添加一行 如果是,请更新客户行与电子邮件匹配而不是主键,并提供额外信息(电话号码)

我怎样才能轻松做到这一点?我怎样才能

REPLACE INTO

使用电子邮件进行处理,而不是主键,仅更新我丢失的信息。即更新电话号码,但保留记录中的地址和姓名。

有更好的方法吗? 最后还有更好的方法来构建我的数据库吗?

mysql database database-design upsert
1个回答
0
投票

我已经在 MySQL/PHP 中完成了此类事情。您的 id 主键必须是自动递增的,并且您将需要在电子邮件字段上有一个唯一索引。

插入

Client
(姓名、电子邮件、电话、地址) 价值观 (“客户名称”、“[电子邮件受保护]”、“555-555-5555”、“000 街道地址、城市、州、邮政编码”) 重复密钥更新名称 =“客户名称”,电话 =“555-555-5555”,地址 =“000 街道地址、城市、州、邮政编码”;

© www.soinside.com 2019 - 2024. All rights reserved.