gpt4 book ai didi

MYSQL:为三个字段的组合创建唯一索引以防止重复

转载 作者:行者123 更新时间:2023-11-29 10:11:08 29 4
gpt4 key购买 nike

为了保持三个字段之间的一对一关系,我想在这三个字段上创建一个 UNIQUE 索引。换句话说,对于一张表,Reviews,如果一个字段是 reviewid,我想防止与多个 reviewid 关联的情况给定userid的给定songid

事实上,我想对 reviewidsongidreviewidartistid 的几种组合执行此操作以及给定 useridreviewidalbumid

此时我无法更改数据架构。虽然现在我正尝试在 PHP 代码中执行此操作,但如果 MYSQL 通过索引强制执行唯一性以确保永远不会漏掉,那就更好了。

Reviews
reviewid (primary key)|text|songid|albumid|artistid|userid
1|great song|222|null|null|22
2|great album|null|333|null|22
3|great singer|null|null|444|22

//I want to exclude the following entry:
4|lousy song|222|null|null|22

我认为这应该可以通过在相关字段上使用 UNIQUE 索引来实现,但我无法让 MYSQL 接受这一点。它表示您不能在同一字段上拥有唯一索引和主索引,在本例中为 reviewid。

有人可以建议如何做到这一点吗?

预先感谢您的任何建议

最佳答案

在我看来,您只需要songId、artistid 和albumid 上单独的唯一键即可。由于reviewId是pk,如果任何songid出现在多个记录中,它必然具有不同的reviewId。事实上,两个字段上的索引将实现与您想要的相反的效果,允许多次出现songId,只要它具有不同的reviewId;多个字段上的唯一索引确保组合是唯一的。

编辑:它已在下面的评论中介绍,但确切的解决方案是唯一索引需要位于用户 ID 和正在审核的歌曲/艺术​​家/专辑上;允许多次评论,每个用户只能评论一次。

关于MYSQL:为三个字段的组合创建唯一索引以防止重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50935102/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com