CREATE TABLE IF NOT EXISTS `mytable` (
`machine_no` varchar(50) CHARACTER SET ascii NOT NULL,
`date` datetime NOT NULL,
`nature` int(11) DEFAULT NULL,
`start` time NOT NULL,
PRIMARY KEY (`machine_no`,`date`),
UNIQUE KEY `date` (`date`),
UNIQUE KEY `start` (`start`),
UNIQUE KEY `start_2` (`start`),
UNIQUE KEY `nature` (`nature`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
此表有一个复合键。
当我尝试插入具有相同日期/时间但不同值machine_no的2条记录时。它说日期重复输入。我不明白它的原因。因为它是一个复合键,它应该只在两个属性中查找重复的条目。
答案 0 :(得分:1)
您的PRIMARY KEY
工作正常:
PRIMARY KEY (`machine_no`,`date`),
导致问题的原因是您拥有的UNIQUE KEY
:
UNIQUE KEY `date` (`date`),
这不允许插入具有相同日期时间的两行。
同样,你的其他3个独特的钥匙也可能会让你受到影响:
UNIQUE KEY `start` (`start`),
UNIQUE KEY `start_2` (`start`),
UNIQUE KEY `nature` (`nature`)
因此,使这些键变得简单(不是唯一)。
并且没有理由让两个相同的键只在名称上有所不同(start
和start_2
)