我有一个如下的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)
,它会抛出一个键错误吗?或者通过考虑unique key约束,是否允许插入条目并使表如下所示?
-------------------------------------
| field1 | field2 | field3 | field4 |
|------------------------------------
| a | b | c | d |
-------------------------------------
| a | b | cc | d |
-------------------------------------
1条答案
按热度按时间bwitn5fc1#
如果违反任何一个唯一键约束(主键算作唯一键约束),它将经历重复记录错误。所以,如果
(field1, field2)
或者(field3)
如果重复,就会出现错误。因此,示例数据将违反约束,插入第二行将生成错误,因为
(field1, field2)
是重复的。