Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][MySQL][PHP]Numeracja kontraktu
pixo
post 14.11.2020, 15:25:50
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.03.2009

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


Witam,

Mam pytani dotyczące automatycznej numeracji.

Mam tabelę KONTRAKT:

ID - Auto Increment
NUMERKONTRAKTU

Przy tworzeniu numeru kontraktu pobieram ostatnie ID tabeli, załóżmy, że jest to 4. Funkcja tworzy NUMERKONTRAKTU, który wygląda 2AB00004 (czwórka na końcu to ostatnie ID).
Wszystko działa, ale do momentu kiedy nie usunę wszystkich rekordów z tabeli KONTRAK.
Po usunięciu wszystkich rekordów (tabela jest pusta), nie wiem jak pobrać pierwsze ID, które dopiero sie stworzy. Nie będzie to 1, no bo już taki ID był przed usunięciem wszystkich kontraktów. Będzie to już ID 5, ale ja o tym nie wiem, że to będzie 5.

Numery kontraktów nigdy nie mogą sie powtórzyć, nawet jak zostaną usunięte.
Go to the top of the page
+Quote Post
trueblue
post 14.11.2020, 15:59:59
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Wstawiaj sobie do odrębnej tabeli ostatni numer ID. Będzie to tabela z jednym rekordem.


--------------------
Go to the top of the page
+Quote Post
dublinka
post 14.11.2020, 16:03:32
Post #3





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Tu sobie sprawdz

https://stackoverflow.com/questions/3952642...528687#39528687


--------------------
Go to the top of the page
+Quote Post
pixo
post 15.11.2020, 20:46:37
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.03.2009

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


Dzięki, stworzyłem odrębną tabelę.
Go to the top of the page
+Quote Post
gino
post 15.11.2020, 22:43:31
Post #5





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

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


Możesz też bez dodatkowej tabeli, ale trzy zapytania w jednym guery:
Kod
INSERT INTO kontrakt (numerkontraktu) VALUES ('');
SET @last_id_kontrakt = LAST_INSERT_ID();
UPDATE kontrakt SET numerkontraktu = CONCAT('2AB000',@last_id_kontrakt) where id = @last_id_kontrakt;
Go to the top of the page
+Quote Post
pixo
post 18.11.2020, 19:54:49
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.03.2009

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


Cytat(gino @ 15.11.2020, 22:43:31 ) *
Możesz też bez dodatkowej tabeli, ale trzy zapytania w jednym guery:
Kod
INSERT INTO kontrakt (numerkontraktu) VALUES ('');
SET @last_id_kontrakt = LAST_INSERT_ID();
UPDATE kontrakt SET numerkontraktu = CONCAT('2AB000',@last_id_kontrakt) where id = @last_id_kontrakt;


Rewelacja, dziękuję, super pomysł smile.gif
Go to the top of the page
+Quote Post
trueblue
post 18.11.2020, 21:37:44
Post #7





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


I jeszcze prościej:
https://dev.mysql.com/doc/refman/5.7/en/cre...ed-columns.html
https://www.mysqltutorial.org/mysql-generated-columns/


--------------------
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 Wersja Lo-Fi Aktualny czas: 24.04.2024 - 09:17