Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "dziwny" auto increment na moim serwerze mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
pointman
Spotkał się ktoś z takim czymś w autoinkrementacji MySQL ?
np. mamy tabele z polem ID autoinkrementującym dodajemy do tabeli 5 rekordów(mają one kolejne numery Id 1,2,3,4,5) po czym je usuwamy. Dodajemy jeden rekord (pole ID ma wartość 6 a w tabeli jest jeden rekord). Usuwamy go(tabela jest pusta) i resetujemy komputer ....
Po restarcie serwera dodajemy jeden rekord i jego ID ma wartość 1 zamiast 7 , gdybyśmy nie zresetowali komputer to wartość była by normalnie 7.

Serwer to MySQL 4.1.7

Jakieś pomysły ?
tabela

CREATE TABLE `produkty` (
`produkt_id` int(10) unsigned NOT NULL auto_increment,
`kategoria_id` int(10) unsigned NOT NULL default '0',
`obrazek` varchar(25) NOT NULL default '',
`miniaturka` varchar(25) NOT NULL default '',
`nazwa_produktu` varchar(40) NOT NULL default '',
`producent` varchar(20) NOT NULL default '',
`skala` varchar(6) NOT NULL default '',
`opis` text NOT NULL,
`ilosc` int(10) unsigned NOT NULL default '0',
`cena` float(6,2) NOT NULL default '0.00',
`data_dodania` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`produkt_id`),
KEY `kategoria_id` (`kategoria_id`)
)


druga tabela to produkty zamowione


CREATE TABLE `produkty_zamowione` (
`zamowienie_id` int(10) unsigned NOT NULL default '0',
`produkt_id` int(10) unsigned NOT NULL default '0',
`nazwa_produktu` char(40) NOT NULL default '',
`producent` char(20) NOT NULL default '',
`skala` char(6) NOT NULL default '',
`ilosc` int(10) unsigned NOT NULL default '0',
`cena_zakupu` float(6,2) NOT NULL default '0.00',
KEY `zamowienie_id` (`zamowienie_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Chce zrobić Top 10 najlepiej sprzedających się produktów
wykonuje zapytanie które mi pomoze odszukać najlepiej sprzedające się produkty:

SELECT produkt_id, SUM(ilosc)
FROM produkty_zamowione
GROUP BY produkt_id

i sprawdzam pozniej czy przypadkiem dany produkt nie jest skasowany,
jeżeli nie jest(istnieje produkt_id w tabeli produkty), to wlasnie wyswietlany jest w grupie najlepiej sprzedajacych sie.
I tak dziala na serwerze w necie i u mnie dopuki go nie zresetuje bo :
np dodaje 3 produkty o kolejnych numerach produkt_id =1,2,3
klient kupuje wszystkie . W tabeli produkty zamówione pojawiaja sie te 3 pozycje skojarzone z zamowieniem, po jakims czasie usuwam te trzy produkty, resetuje serwer, dodaje nastempny produkt ktory zamiast produkt_id=4 ma 1 i on pojawia mi sie w bestsellerach exclamation.gif

aha

w tabeli produkty zamowione istnieja pola nadmiarowe (nazwa_produktu, producent,skala) na wypadek gdyby administrator usunal dany produkt - jego parametry musza byc pokazywane w historii zamowien uzytkownikow nawet po skasowaniu danego produktu z tabeli produkty, czy taka uzasadniana nadmiarowość jest dopuszczalna?
Te pola :
`nazwa_produktu` char(40) NOT NULL default '',
`producent` char(20) NOT NULL default '',
`skala` char(6) NOT NULL default '',
tts
a na czym polega problem? ma byc id ustawione na 7 czy resetowane do 1?
Cysiaczek
To jest po prostu unikalny numer. Zawsze będzie po prostu wyższy od poprzednio wpisanego. Jest to zatem naturalne. Najlepiej dopisz jakieś dodatkowe pole, które będzie odpowioadało za oznaczenie liczby porządkowej.
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.