pixo
14.11.2020, 15:25:50
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.
trueblue
14.11.2020, 15:59:59
Wstawiaj sobie do odrębnej tabeli ostatni numer ID. Będzie to tabela z jednym rekordem.
pixo
15.11.2020, 20:46:37
Dzięki, stworzyłem odrębną tabelę.
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;
pixo
18.11.2020, 19:54:49
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ł