具有主键和唯一键约束的Mysql表

时间:2018-05-15 20:56:24

标签: mysql sql primary-key

我有一个如下所示的mysql表,

CREATE TABLE IF NOT EXISTS `sometable` (
  `field1` varchar(36) NOT NULL,
  `field2` varchar(36) NOT NULL,
  `field3` varchar(36) NOT NULL,
  `field4` varchar(36) NOT NULL,
  PRIMARY KEY (`field1`, `field2`)
  UNIQUE KEY `field3` (`field3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在什么情况下,此表的记录会被视为重复记录?假设我的表中有以下记录。

-------------------------------------
| field1 | field2 | field3 | field4 |
|------------------------------------
|   a    |   b    |    c   |    d   |
-------------------------------------

现在,如果我插入(field1,field2,field3,field4) values (a, b, cc, d),是否会重复出现错误?或者通过考虑唯一键约束,它是否允许插入条目并使表格如下所示?

-------------------------------------
| field1 | field2 | field3 | field4 |
|------------------------------------
|   a    |   b    |    c   |    d   |
-------------------------------------
|   a    |   b    |   cc   |    d   |
-------------------------------------

1 个答案:

答案 0 :(得分:0)

如果违反了 的唯一键约束(主键计为唯一键约束),则会发生重复记录错误。因此,如果重复(field1, field2)(field3),您将收到错误。

因此,您的示例数据会违反约束,插入第二行会产生错误,因为(field1, field2)是重复的。