我想要一个id和name作为我的表的主键。我想用每个插入增加id,所以我将它设置为auto_increment。问题是当我向表中插入一个具有相同名称的新条目时,它会使用新的id插入它,并且存在具有相同名称和不同ID的重复条目。我不想事先搜索表格,看看是否有任何入口。请帮我解决这个问题。
答案 0 :(得分:2)
如果您希望它按名称唯一,则需要在名称字段上添加唯一索引,然后您可以在复制键上使用mysql语法:mysql reference for on duplicate key
答案 1 :(得分:2)
我认为你做过类似的事情
CREATE TABLE table1
id unsigned integer autoincrement,
name varchar,
....
primary key (id,name)
此主键不会选择唯一名称,因为自动增量ID将始终使键作为一个整体唯一,即使有重复的name
- 字段。
另请注意,长主键是错误的想法,PK越长,插入和选择的执行速度就越慢。这在InnoDB上尤其糟糕,因为PK包含在每个辅助密钥中,使索引文件膨胀。
将其更改为此
CREATE TABLE table1
id unsigned integer autoincrement primary key,
name varchar,
....
unique index `name`(name)
答案 2 :(得分:0)
您可以在名称字段中应用唯一索引,或者如果您要存储人员,则允许重复名称。
答案 3 :(得分:0)
添加UNIQUE(your_column_name
),您应该将your_column_name
替换为数据库中的列。