Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [solved] opcja zerofill autoincrement
mihmih
post
Post #1





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


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

Ten post edytował mihmih 21.08.2015, 21:17:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mihmih
post
Post #3





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Dokumentacja, dokumentacja.
https://dev.mysql.com/doc/refman/5.1/en/str...l#function_lpad


--------------------
Go to the top of the page
+Quote Post
mihmih
post
Post #5





Grupa: Zarejestrowani
Postów: 125
Pomógł: 1
Dołączył: 4.06.2015

Ostrzeżenie: (0%)
-----


dzięki
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


A czemu CONCAT odpada? Na CONCAT też można zrobić... SELECT RIGHT(CONCAT('00000', id), 5)
To samo co LPad
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 07:24