避免在mySQL中插入重复的行

Ale*_*lom 7 mysql database

我有一个带有auto_incid(主键)的表.我试图避免插入重复的行.

重复行的示例:

id  | field a | field b | field c |
1       4          6         7
2       4          6         7
Run Code Online (Sandbox Code Playgroud)

key(id)不重复,因为它是由MySQL自动生成的,但所有其他字段都是相同的.

Len*_*art 13

在字段a,b,c上创建唯一索引.

ALTER TABLE `table` ADD UNIQUE (
`a` ,
`b` ,
`c`
);
Run Code Online (Sandbox Code Playgroud)

  • 这正是它的作用;-)它是一个组合键,而不是三个单独的键. (2认同)

ale*_*oot 8

您应该使用ON DUPLICATE KEY UPDATE 并将字段声明为唯一.

如果指定ON DUPLICATE KEY UPDATE,并且插入的行将导致UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行的UPDATE.

  • 您应该创建一个复合唯一索引:http://stackoverflow.com/questions/635937/how-do-i-specify-unique-constraint-for-multiple-columns-in-mysql (2认同)