MySQL重复主键

时间:2014-04-27 11:46:23

标签: mysql sql indexing primary-key

我的主键有问题:

Create table Information
 (
  idObject Varchar(10)not null,
  typeInfo Varchar(20)not null,
  valueInfo Varchar(1000),
  constraint key_Info PRIMARY KEY(idObject, typeInfo)
 );

我要在此表中插入大量信息。其中之一是错误。它可能是具有相同对象和类型(错误)的一些错误,因此与主键存在冲突。 我不想为每个信息创建一个索引,因为在大多数情况下它是不必要的。 而我如何理解,不可能只为几行创建一个索引。我该如何解决这个问题。 谢谢!

1 个答案:

答案 0 :(得分:0)

为表使用代理主键,并为对象/类型对定义单独的索引:

Create table Information (
    InformationId int not null auto_increment,
    idObject Varchar(10) not null,
    typeInfo Varchar(20)not null,
    valueInfo Varchar(1000),
    KEY(idObject, typeInfo)
);

您确实需要为每一行添加某种标识符,以便区分相似的行。这是代理键的目的之一。如果此表被任何其他表引用,则代理键还允许明确设计的外键关系,这是良好数据库设计的标志。

我不知道这是什么意思:

  
    

我不想为每个信息创建索引

  

索引是数据库的组成部分,应在适当的地方使用。