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

5

我有以下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

所有的时间段都是同一天的,因此用户可以输入他有空的不同时间。

现在我已经做到了,并且它也起作用了,但是现在我遇到了一个问题。我为一个用户输入了一些数据,现在当我尝试为另一个用户输入同一天的数据时,无法进行,因为它已经存在了。

我该如何使同一用户能够输入多个日期,同时另一个用户也可以输入相同的日期?但是同一用户不能输入相同的日期两次……怎么做呢?

2个回答

4
你可能希望在 user_iddate 上使用复合主键 PRIMARY KEY
你也可以像 Quassnoi 建议的那样使用唯一键,但看起来你的date字段本身不是一个有效的主键候选项。请注意保留html标签。

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

你应该删除 date 上的 PRIMARY KEY

你可以像 Daniel Vassallo 建议的那样,在 user_id, date 上创建一个,或者如果你需要引用这个表,可以创建一个代理 PRIMARY KEY(比如一个带有 AUTO_INCREMENT 列)。


如果您不介意,能否再解释一下这个问题?我对您在这里所说的内容并不完全理解。 - Ahamed Nishadh
@ananworks:看看这个链接:http://en.wikipedia.org/wiki/Unique_key 和这个链接:http://help.w3schools.com/sql/sql_unique.asp,了解一下唯一键的基本介绍。 - Daniel Vassallo
谢谢...我会检查一下,如果还需要帮助的话,我会再回来的!再次感谢! - Ahamed Nishadh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接