同时给3列添加Unique

Add Unique to 3 columns at the same time

我有一个名为 social_accounts 的 table 来存储 OAuth 登录的数据

id
user_id
provider
provider_id

我想让 user_id,provider,provider_id UNIQUE 但我希望所有 3 列同时都是唯一的 这意味着 ID 为 x 的用户可以有一个 provider_id b 和提供者 google 例如但是这一行没有重复但是使用 x 可以有另一个以提供商 faceook 为例的行

provider 列在这里似乎是多余的。你应该有一个单独的 table 和 provider_idprovider

要在多个列上设置 UNIQUE 索引,请尝试以下操作:

ALTER TABLE `social_accounts` ADD UNIQUE `unique_index`(`user_id`, `provider_id`);

但是,如果您想坚持在 table 中使用 provider 的方法,请使用此方法:

ALTER TABLE `social_accounts` 
ADD UNIQUE `unique_index`(`user_id`, `provider_id`, `provider`);

另请注意,unique_index 是您的索引的名称,您可以随意命名。