Mysql 插入重复值,而不更改分配给第一个非重复值的主键

Mysql 插入重复值,而不更改分配给第一个非重复值的主键,mysql,sql-insert,primary-key,Mysql,Sql Insert,Primary Key,我刚开始学习MySQL,遇到了一个问题。 我有一个带有字段的表: CREATE table clientele( client_id mediumint(5) unsigned auto_increment, clientname varchar(25), product_id mediumint(5), orderqty int(10), PRIMARY KEY (client_id,product_id) ) 当我插入值时,客户端id将开始分

我刚开始学习MySQL,遇到了一个问题。 我有一个带有字段的表:

CREATE table clientele(
    client_id mediumint(5) unsigned auto_increment,
    clientname varchar(25),
    product_id mediumint(5),
    orderqty int(10),
    PRIMARY KEY (client_id,product_id)
    )

当我插入值时,客户端id将开始分配给every clientname字段。如果我在插入过程中重复任何clientname,假设它有其他不同的字段值(product\u id/orderqty),它将被分配一个新的客户端id。如何为单个客户端名称保留一个客户端id,如果同一客户端有多个条目

,则可以改进表结构。我建议使用以下表格来完成您的任务:

1. Table: ClientDetails
      columns: clientid, clientname (clientid primary auto increment)

2. Table: Products
        columns: productid, productname ( productid primary key auto increment)

3. Table : ClientOrders
       columns: orderid, productid, clientid, orderQuantity 
( here, orderid is primary key auto-increment and productid clientid will be foreign keys).
现在,您可以使用连接的概念来获取数据并根据需要处理数据

演示条目:

客户详情: 身份证,姓名

  • 约翰·多伊
  • 产品 身份证,姓名

  • 笔记本电脑
  • 流动的
  • 客户订单 orderid、productid、clientid、orderQuantity

  • 1,1,3
  • 2,1,2

  • 在这里,jhon doe购买了3台笔记本电脑和2台手机。

    您使用两个主键,您必须使用一个主键,您有另一个表产品,因此(product_id)是products表的主键,而fofign键是表客户的主键。

    如果您是新开始的,整数声明会有参数,这很奇怪。考虑升级到最新版本,您通常不会在“clitelele”表中存储“产品ID”。规范化您的模式