Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UNIQUE dla niepustych rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
Pilsener
Witajcie, mam (nie wiem czy nie głupi) problem - mam w bazie pole "xyz" i chcę, aby dane w nim zawarte (powiedzmy numer aneksu umowy) były unikalne - dodałem indeks UNIQUE i niby jest ok, ale co zrobić, gdy pole "xyz" nie jest wymagane i może być puste? W momemncie dodawania drugiego pustego rekordu pojawia się "duplicate entry...". Da się jakoś prosto temu zaradzić? Ustawić unikalność tylko dla niepustych?
nospor
puste pola ustawiaj jako NULL a nie jako pusty string
dr_bonzo
nospor - e-e, pozwoli wrzucic tylko JEDNEGO null'a, Pilsner - BEFORE INSERT TRIGGERA dodaj ktory sprawdzi i odrzuci rekord ze zduplikowana wartoscia

edit:
eh tongue.gif a jednak UNIQUE zadziala w mysql

Cytat
UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. This constraint does not apply to NULL values except for the BDB storage engine. For other engines, a UNIQUE index allows multiple NULL values for columns that can contain NULL.


http://dev.mysql.com/doc/refman/5.0/en/create-index.html
nospor
Cytat
nospor - e-e, pozwoli wrzucic tylko JEDNEGO null'a
no popatrz, tyle lat tego uzywam i jakos dziala tongue.gif
Pilsener
Cytat(nospor @ 15.09.2008, 10:07:58 ) *
...jako NULL a nie jako pusty string
- no tak, value=NULL a value='' to nie to samo przecież sciana.gif Wszystko przez to, że musi być value='$zmienna' a nie value=$zmienna - trochę mi to nasieje zamętu w kostruktorze zapytań, ale wolę już to niż trigger winksmiley.jpg

Dzięki Nospor za pomoc!
dr_bonzo
Z PG:

Cytat
When an index is declared unique, multiple table rows with equal indexed values will not be allowed. Null values are not considered equal

I juz latwiej zapamietac czemu tak jest biggrin.gif
$moja_wiedza++
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.