Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL重复主键_Mysql_Sql_Indexing_Primary Key - Fatal编程技术网

MySQL重复主键

MySQL重复主键,mysql,sql,indexing,primary-key,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) ); 我有很多信息要插入这个表中。其中之一是错误。对于相同的对象和类型,可能会出现一些错误(错误),因此与主键存在冲突。 我不想为每

我的主键有问题:

Create table Information
 (
  idObject Varchar(10)not null,
  typeInfo Varchar(20)not null,
  valueInfo Varchar(1000),
  constraint key_Info PRIMARY KEY(idObject, typeInfo)
 );
我有很多信息要插入这个表中。其中之一是错误。对于相同的对象和类型,可能会出现一些错误(错误),因此与主键存在冲突。 我不想为每一个信息创建索引,因为在大多数情况下它是不必要的。 我的理解是,仅仅为几行创建索引是不可能的。我怎样才能解决这个问题。
谢谢大家!

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

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)
);
您确实需要为每一行指定某种标识符,以便能够区分相似的行。这是代理密钥的用途之一。如果该表被任何其他表引用,那么代理键还允许显式设计的外键关系,这是良好数据库设计的标志

我不知道这是什么意思:

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


索引是数据库不可分割的一部分,应该在适当的情况下使用。

您应该修改表结构。具有唯一值的列对于使其成为1NF是绝对必要的。没有正常化,你会有大麻烦。