gpt4 book ai didi

mysql - 是否可以只对列应用一个唯一约束,同时定义其他约束?

转载 作者:行者123 更新时间:2023-11-30 22:20:26 25 4
gpt4 key购买 nike

假设我们必须保留人们的投票,这些投票可以来自用户或 guest :

CREATE TABLE votes (
to_user_id INT UNSIGNED NOT NULL,
from_user_id INT UNSIGNED,
from_ip_address INT UNSIGNED
)

对于用户投票,我们希望应用一个唯一约束 (to_user_id, from_user_id) 并为访客应用一个约束 (to_user_id, from_ip_address)

没有同时应用的唯一索引的组合不会破坏其中任何一个:投票的唯一性和具有相同 ip 地址的不同用户投票的能力。

有什么好的解决办法吗?

最佳答案

你可以改变数据结构:

CREATE TABLE Votes (
VoteId int unsigned primary key,
UserId int unsigned not null,
IpAddress int unisgned,
Which enum('from', 'to'),
constraint unq_Votes_UserId_IpAddress_Which unique (UserId, IpAddress, Which)
);

请注意,我添加了一个主键,这对于外键引用、标识单行和维护插入顺序很方便。

关于mysql - 是否可以只对列应用一个唯一约束,同时定义其他约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36740319/

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