Başka bir alana bağlı bir alan benzersiz olun

2 Cevap php

Ben şu MySQL tablo var ..

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

Bütün yuvaları aynı gün için, yani kullanıcı o serbest günün giriş farklı zamanlarda olduğunu olduğunu.

Şimdi ben bunu yaptım ve işe yaradı ve şimdi bir sorun tökezledi. Ben bir kullanıcı için bazı verileri girmiş ve ben aynı tarih için başka bir kullanıcı için veri girmeye çalıştığınızda o zaten var diyor, çünkü artık yapamıyorum.

Bu nasıl yapılabilir ... Ben aynı kullanıcı birden tarihleri ​​girin ve başka bir kullanıcı aynı tarihini girer olabilir? ... Ama aynı kullanıcı iki kez aynı tarih giremezsiniz böylece nasıl i yapabilirim?

2 Cevap

Sen user_id ve date üzerine bir kompozit PRIMARY KEY kullanmak isteyebilirsiniz.

Ayrıca unique key Quassnoi suggested olarak kullanmak olabilir, ancak tek başına date alanı geçerli bir candidate for a primary key değil gibi gerçekten görünüyor.

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

Sen PRIMARY KEY üzerine date. Bırakın gerekir

Sen, (Daniel Vassallo önerilen) user_id, date üzerine bir tane oluşturun ya da olabilir ya sen, bu tabloyu referans bir {[(2 suret PRIMARY KEY (diyelim ki) oluşturmak gerekiyorsa }] kolonu).