联合唯一约束
主键一旦录入,就不要再修改了。
因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。
不使用任何业务相关的字段作为主键。
添加联合唯一约束
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
2
3
4
5
6
7
demo
INSERT INTO `demo`(`name`,`type`) values('张三',19)
INSERT INTO `demo`(`name`,`type`) values('李四',20);
1
2
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
2
3
4