繁体   English   中英

根据另一个字段使一个字段唯一

[英]Make one field unique depending on another field

我有以下MySQL表..

userid - foreign key
date   - primary key
slot1  - 1st free slot
slot2  - 2nd free slot
slot3  - 3rd free slot
slot4  - 4th free slot
slot5  - 5th free slot
slot6  - 6th free slot
slot7  - 7th free slot
slot8  - 8th free slot

所有的插槽都在同一天,因此用户可以输入他空闲的一天中的不同时间。

现在我做了这个并且它有效,现在我偶然发现了一个问题。 我为一个用户输入了一些数据,现在当我尝试为同一日期输入另一个用户的数据时,我不能说它已经存在了。

我如何制作它以便我可以让同一个用户输入多个日期而另一个用户输入相同的日期?...但是同一个用户不能两次输入相同的日期...如何做到这一点?

您可能希望在user_iddate上使用复合PRIMARY KEY

您也可以使用Quassnoi建议唯一密钥 ,但实际上看起来您的date字段不是主键的有效候选者

ALTER TABLE mytable ADD CONSTRAINT ux_mytable_user_date UNIQUE KEY (user, date)

你应该在date放弃PRIMARY KEY

您可以在user_id, date上创建一个(如Daniel Vassallo建议的那样),或者,如果需要引用此表,则创建一个代理PRIMARY KEY (例如,使用AUTO_INCREMENT列)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM