联合唯一约束

主键一旦录入,就不要再修改了。

因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。

不使用任何业务相关的字段作为主键。

添加联合唯一约束

ALTER TABLE <> ADD UNIQUE KEY <索引名>(<列名1>, <列名2>)
1

or

CREATE TABLE `demo` (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(128) DEFAULT NULL,
  `type` TINYINT(4) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `only` (`name`,`type`)
)
1
2
3
4
5
6
7
demo
INSERT INTO `demo`(`name`,`type`) values('张三',19)
INSERT INTO `demo`(`name`,`type`) values('李四',20);
1
2

然后 在执行

INSERT INTO `demo`(`name`,`type`) values('张三',19)
1

就会失败了

唯一键约束添加后,实际上建立了一个索引,将该索引删除后,就等于删除了联合唯一约束。

示例

ALTER TABLE `m_ccp_fee_order` ADD COLUMN `oend` VARCHAR(32) DEFAULT 0 COMMENT 'uuid.结束标识,与userKey、订单状态 组成唯一联合约束。防止订单重复' AFTER `status`;


ALTER TABLE `m_ccp_fee_order` ADD UNIQUE KEY `only` (`user_key`, `status`,`oend`);
1
2
3
4