Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [solved] opcja zerofill autoincrement
Forum PHP.pl > Forum > Bazy danych > MySQL
mihmih
witam,

mam w mojej bazie w jednej z kolumn ponad tysiąc rekordów, id rośnie automatycznie co 1 od 0. Wartość ID wykorzystuje potem jako numery dokumentów i ładniej byłoby mieć dokumenty wypełnione zerami, tak aby każdy numer miał tyle samo cyfr. Czyli funkcja zerofill. Znalazłem poniższy kod:


  1. ALTER TABLE `database`.`table` CHANGE COLUMN `id` `id` INT(11) ZEROFILL NOT NULL AUTO_INCREMENT


I teraz mam pytania:

1. Czy w ogóle warto teraz coś zmieniać? jest to bezpieczne?
2. Czy to może wpłynąć na relacje, klucze obce, ogólną funkcjonalność bazy?
3. Czy ta zmiana byłaby od aktualnego Id czy uzupełniłaby zerami poprzednie rekordy również?
4. Czy id ustawione np. na INT(5) będzie dalej rosnąć po id=99999? Czy komputer wtedy wybuchnie?smile.gif
Pyton_000
1. Nie, bo ...
2. Jeśli masz ustawione relacje to nie zmienisz, wywali błąd braku zgodności kolumn
3. Dla wszystkich o ile pkt. 2
4. Nic, po prostu zerofill dalej nie będzie miał co robić bo przekroczyłeś limit.
mihmih
dziękuję za szybką odpowiedź

a czy jest inna funkcja, dzięki której w klauzuli SELECT będę mógł wyświetlić moje ID = 2345 jako 002345 a Id=678 jako 000678? Oczywiście CONCAT odpada, bo wtedy ilość zer będzie stała, a długość wyrażenia zmienna...
trueblue
Dokumentacja, dokumentacja.
https://dev.mysql.com/doc/refman/5.1/en/str...l#function_lpad
mihmih
dzięki
mmmmmmm
A czemu CONCAT odpada? Na CONCAT też można zrobić... SELECT RIGHT(CONCAT('00000', id), 5)
To samo co LPad
nospor
Tja... to samo co LPAD tylko 100 razy dluzsze w zapisie i niestety nie uzywa samego CONCAT.... Moze wlasnie dlatego autor watku pisal, ze CONCAT odpada... tongue.gif
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.