mysql 值唯一,MySQL-使一对值唯一

I have a table with two int values that are IDs. On their own these IDs can show up any number of times in the table, but together they should only ever appear once.

Is there a way to make a pair of values unique and still allow the individual values to show up multiple times?

As a follow up, if this is possible can the pair of values be used as a key? I currently have a 3rd column for a unique auto increment value for my key.

解决方案

It's called a composite key.

If you want to change your actual PK to a composite one, use

Alter table drop PRIMARY KEY;

Alter table drop COLUMN ;

Alter table add [constraint ] PRIMARY KEY (, );

You can also just add a unique constraint (your PK will be the same, and unique pairs... will have to be unique).

alter table add [constraint ] unique index(, );

Personnally, I would recommend the second solution (simple PK + unique constraint), but that's just a personal point of view. You can google for pros and cons arguments about composite keys.

The part between [] are optional.

EDIT

If you wanna do this in the create table statement

For a composite pk

CREATE TABLE Test(

id1 int NOT NULL,

id2 int NOT NULL,

id3 int NOT NULL,

PRIMARY KEY (id1, id2)

);

For an unique index

CREATE TABLE Test1(

id1 int NOT NULL AUTO_INCREMENT,

id2 int NOT NULL,

id3 int NOT NULL,

PRIMARY KEY (id1),

UNIQUE KEY (id2, id3)

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值