多个独特的列,但只有独特的组合

发布于 2024-11-07 01:55:15 字数 389 浏览 3 评论 0原文

我遇到了 MySQL 唯一索引的问题。我想做的是这样的:

user_id  group_id
1        1
1        2
1        3
2        1
2        4

同一用户 ID 可以有多个实例,也可以有组 ID 的多个实例,但允许两者的唯一组合。我将其与 ON DUPLICATE KEY UPDATE MySQL 查询一起使用,我想知道我需要对表上的索引执行什么操作。目前,我有这个:

PRIMARY id
UNIQUE  user_id, group_id

但是...... a)这足够了吗?b)我是否正确地得到了我正在寻找的东西?

感谢

詹姆斯的任何帮助

I've run into a problem with MySQL unique indicies. What I want to do is have something like this:

user_id  group_id
1        1
1        2
1        3
2        1
2        4

Where there can be multiple instances of the same user ID, as well as multiple instances of group IDs, but only allow unique combinations of the two. I'm using this with an ON DUPLICATE KEY UPDATE MySQL query, and I'm wondering what I need to do to the indexes on the table. Currently, I have this:

PRIMARY id
UNIQUE  user_id, group_id

But... a) is this enough and b) am I doing it right to get what I'm looking for?

Thanks for any help

James

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

违心° 2024-11-14 01:55:15

你几乎明白了。如果您使用 MyISAM 引擎,您可以执行以下操作:

CREATE TABLE your_table(
id int unsigned not null auto_increment,
group_id int unsigned,
primary key(group_id, id)
) ENGINE = MyISAM;

尝试一下并查看行为,它将按照您在示例中指定的方式递增 id,并且您也将具有唯一约束。

You almost got it. If you use MyISAM engine, you can do this:

CREATE TABLE your_table(
id int unsigned not null auto_increment,
group_id int unsigned,
primary key(group_id, id)
) ENGINE = MyISAM;

Try it and see the behavior, it'll increment the id the way you specified in your example and you'll have unique constraint too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文