如何通过部分字段创建UNIQUE KEY?

时间:2018-01-10 12:10:55

标签: mysql

我的环境是服务器版本:5.1.72社区MySQL社区服务器(GPL)。

一个例子:

CREATE TABLE `pe` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `person_id` int(11) NOT NULL,
  `height` int(3) DEFAULT NULL,
  `weight` double(5,1) DEFAULT NULL,
  `pe_time` date NOT NULL DEFAULT '0000-00-00',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_id` (`person_id`,`pe_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

我在表pe中有一些行,其中一些像:

person_id, height, weight, pe_time

10051, 160, 55, '2017-10-20'

10052, 172, 60, '2018-01-09'

现在,给出一个新的行:

person_id, height, weight, pe_time

10052, 172, 61, '2018-01-10'

因为pe_time的年份是2018年且person_id = 10052,所以我想更新该行,将每个字段设置为新值。

但是,给出了一个新的行:

person_id, height, weight, pe_time

10051, 161, 57, '2018-01-10'

因为没有pe_time的年份是2018年且person_id = 10051的行,所以我想插入新的行。

就这样,我想要

UNIQUE KEY is `uk_id` (`person_id`,**`pe_time's year`**). 

如果无法创建那个UNIQUE KEY,如何编写sql

INSERT INTO... ON DUPLICATE KEY UPDATE... 

请这样做?

0 个答案:

没有答案