ursus contionabundo: MySQL Unique Index mit NULL

Beitrag lesen

Hallo,

besteht die Möglichkeit irgendwie einen Unique Index zu erstellen, wenn es auch leere Datenfelder gibt. Es soll also "nur" die eMail Adresse nicht doppelt vorkommen.

Kunden-DB


ID | eMAIL
-----------
1 | test@
2 | test2@
3 |
4 |
5 | test3@

Hm. Die Admins der Stiftung Warentest werden erfreut sein wenn die einschlägigen Bots denen Mails an die von Dir genannten Adressen zustellen wollen:

~> host test.de
test.de has address 13.80.248.222
test.de mail is handled by 10 sw-proxy01.stiftung-warentest.de.
test.de mail is handled by 20 mx.colt.net.

Mach das einfach nicht wieder. Die Domain "example.com" ist nicht grundlos für sowas vorgesehen

Es soll also "nur" die eMail Adresse nicht doppelt vorkommen.

Das so beschriebene Problem löst:

Table: Kunden

ID | eMailID 1 | 1 2 | 2 3 | 0 4 | 0 5 | 3

setze eMailID auf einen normalen Index.

Table: eMailAdressen

ID | eMail 0 | NULL 1 | foo@example.com 2 | bar@example.com 3 | tok2@example.com

Hier kannst Du die Spalte ID auf Primary Index, Not Null, Autoinkrement setzen, die Spalte eMail auf Unique.