我想要一个ID和名称作为我的表的主键。我想增加每个插入id,所以我把它设置为auto_increment。问题是,当我插入到表中一个新的条目具有相同的名称,它插入一个新的ID,并有重复的条目具有相同的名称和不同的ID。我不想事先搜索表格,看看是否有预先录入。请帮我解决这个问题。作为导致重复项的主键的自动增量
回答
我认为你做了什么这样
CREATE TABLE table1
id unsigned integer autoincrement,
name varchar,
....
primary key (id,name)
这个主键不上唯一的名称选择,因为自动增量ID始终使键作为一个整体独特的,即使有重复name
-fields。
另请注意,长主键是一个不好的的想法,你的PK越长,插入和选择越慢执行。这在InnoDB上尤其糟糕,因为PK包含在每个辅助密钥中,使您的索引文件膨胀。
改成这样
CREATE TABLE table1
id unsigned integer autoincrement primary key,
name varchar,
....
unique index `name`(name)
您可以对名称字段应用唯一索引,或者如果您要存储人员,则允许重复名称。
添加UNIQUE(your_column_name
),您应该将your_column_name
替换为数据库中的列。
这是可行的,但需要OP如果他希望他的查询,不急不慢也改变主键定义。 – Johan 2011-05-26 08:52:38
如果你希望它是由名称唯一,你需要在名称字段中添加唯一索引,然后你可以重复键使用mysql语法:mysql reference for on duplicate key
谢谢..完全忘记了这个独特的元素..谢谢.. – 2011-05-26 08:44:52
- 1. 重复键主键自动增量
- 2. Mysql:与主键自动增量重复键错误
- 3. 自动增量主键
- 4. 主键自动增量
- 5. 主键自动增量为-1,-2,-3
- 6. sqlite在回滚后重复主键自动增量值
- 7. 为什么INNODB批量插入会导致自动递增主键跳过值?
- 8. 什么可能会导致自动增量主键字段(mysql)上的重复ID?
- 9. 同步数据库时一致的自动增量主键sqlite
- 10. 在重复键上插入导致自动增加字段中的问题
- 11. 自动递增,导致重复值的大表
- 12. mySQL复合主键与自动增量的一部分
- 13. 自动增量的Doctrine 2复合主键
- 14. 具有自动增量部分的复合主键
- 15. 复合主键和自动增量?什么是好的做法?
- 16. 带有组合主键自动增量一部分的SQL 2008复合主键
- 17. 复合主键和自动增量列,但不是主要的关键
- 18. mySQL自动增量问题:重复条目'4294967295'为键1
- 19. 如何使用自动增加的主键作为外键?
- 20. 自动增加复合主键
- 21. 自动增量主键作为外键 - 合并数据库中的问题
- 22. mysql主键自动增量问题
- 23. 整数主键不自动增量
- 24. 更改主键自动增量
- 25. Hibernate/JPA SQLServer主键自动增量
- 26. Int自动增量主键和GUID列
- 27. 两个主键&自动增量
- 28. mysql无限主键自动增量
- 29. 如何创建自动增量主键?
- 30. JPA自动增量非主键列
感谢您的提示...不知道那..也会照顾这一点..再次感谢.. – 2011-05-26 09:04:40