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

时间:2010-02-27 12:56:23

标签: php mysql sql

我有以下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 个答案:

答案 0 :(得分:4)

您可能希望在PRIMARY KEYuser_id上使用复合date

您也可以使用unique key作为Quassnoi suggested,但实际上您的date字段看起来不是有效的candidate for a primary key

答案 1 :(得分:3)

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

您应该将PRIMARY KEY放在date上。

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