Mysql具有重复条目的唯一行为

时间:2013-08-08 22:13:27

标签: mysql duplicates unique

如果我将两列设置为唯一,然后两次插入相同的值,那么数据库将如何表现?它会忽略第二个插入还是替换第一个?

2 个答案:

答案 0 :(得分:2)

来自手册

  

通常,数据更改语句(例如INSERT或UPDATE)会发生错误,这些错误会违反主键,唯一键或外键约束。

但是,如果您使用IGNORE关键字,则会允许它。

了解更多here

答案 1 :(得分:0)

'columns'是字段,每个字段单独唯一。

CREATE TABLE `mydb`.`example` (
  `rid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `basecolor` VARCHAR( 12 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
  `trimcolor` VARCHAR( 12 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
  UNIQUE (
     `basecolor`
  )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE `example` ADD UNIQUE (
  `trimcolor`
)

INSERT INTO example (basecolor, trimcolor) VALUES ('red', 'red'), ('green', 'green'), ('blue', 'green')

#1062 - Duplicate entry 'green' for key 'trimcolor'

SELECT * FROM example  

+------------------------------+  
| rid  | basecolor | trimcolor |  
|======|===========|===========|  
| 1    | red       | red       |  
| 2    | green     | green     |  
+------------------------------+