Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: logowanie
Forum PHP.pl > Forum > Bazy danych > MySQL
Jarod
Mam tabelę logi. Do tej tabeli zapisywany jest login, data i godzina logowania oraz wylogowania użytkownika. Klucz główny tej tabeli ustawiłem na BIGINT. Chcę aby admin miał możliwość okresowego kasowania tych logów. Wiem, że można zmienić wartość licznika AUTO_INCREMENT tylko nie pamiętam jak.
Jeśli w tabeli będę miał 50 wpisów i wszystkie usune, a później dodam jakiś to wartość klucza głównego będzie wynosić 51.

Moje pytanie: Jak zmienić, żeby wstawiało znowu od wartości 1? I czy to przestawienie nie wpłynie na inne tabele?

EDIT:
_____

Sprawa ma się tak. Do zmiany wartości AUTO_INCREMENT służy polecenie
  1. SET INSERT_ID=jakas wartosc
Wszystkie wpisuje z palca

Ale pojawił się inny problem. Utwozyłem sobie drugą bazę:
  1. CREATE TABLE dupa
  2. (
  3. dupa_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. opis VARCHAR10)
  5. );


A potem ładuje takie dane:
  1. INSERT
  2. INTO dupa VALUES (NULL,'czysta');

  1. INSERT
  2. INTO dupa VALUES (NULL,'brudna');
smile.gif
Teraz sprawdzamy numerek klucza:
  1. SELECT LAST_INSERT_ID();

i otrzymujemy wynik 2.
Spróbujmy zmienić ten numerek.
  1. SET INSERT_ID=10

I wypełniamy dabnymi:
  1. INSERT
  2. INTO dupa VALUES (NULL,'zgrabna')

Teraz sprawdzamy numerek klucza:
  1. SELECT LAST_INSERT_ID();

i otrzymujemy wynik 10.

DZIAŁA smile.gif

Aler na mojej bazie (siększej, gdzie mam posutawiane klucze obce), polecenie
  1. SELECT LAST_INSERT_ID();
wypisuje cały czas wartość 0. Natomiast
  1. SET INSERT_ID=10
niby wykonane pomyślnie ale nie zmienia wartości.

Czy ktoś wie dlaczego?
SongoQ
Dziwne bo takie cos sie gdzies indziej stosuje.

Wykorzystaj cos takiego
  1. ALTER TABLE twoja_tabela AUTO_INCREMENT = wartosc
Jarod
Cytat(SongoQ @ 2005-05-03 16:49:28)
Dziwne bo takie cos sie gdzies indziej stosuje.

Wykorzystaj cos takiego
  1. ALTER TABLE twoja_tabela AUTO_INCREMENT = wartosc

A gdzie np?
SongoQ
Np podczas dodawania rekordu.
Diwi
Hmm.. jeżeli chcesz żeby Admin miał możliwośc co jakiś czas kasowania wszystkich rekordów to polecam zapytanie
  1. TRUNCATE TABLE `tabela`
takie zapytanie wyrzuca wszystkie rekordy z tabeli a także resetuje działanie funkcji AUTO INCREMENT ustawiając licznik na 1 smile.gif

Pozdrawiam
Jarod
Cytat(Diwi @ 2005-05-04 18:59:45)
Hmm.. jeżeli chcesz żeby Admin miał możliwośc co jakiś czas kasowania wszystkich rekordów to polecam zapytanie
  1. TRUNCATE TABLE `tabela`
takie zapytanie wyrzuca wszystkie rekordy z tabeli a także resetuje działanie funkcji AUTO INCREMENT ustawiając licznik na 1 smile.gif

Pozdrawiam

Żeczywiście zapomniałem o tej instrukcji. Jest efektywniejsza. Dodam tylko, że pomimo zapewnień autorów pewnej ksiązki, instrukcja ta jest obsługiwana przez transakcje - czyli da się cofnąć..

@Diwi: sprawdzałem - primary key nie jest automatycznie ustawiany na 1
SongoQ
@J4r0d
Cytat
@Diwi: sprawdzałem - primary key nie jest automatycznie ustawiany na 1


Primary key sie nie ustawia tylko wartosc autoindex(auto_increment).
Mozesz ewntualnie po TRUNCATE TABLE `tabela` wywolac ALTER TABLE `tabela` TYPE = InnoDB wtedy wartosc ustawi sie na 1.

Oczywiscie to dla InnoDB

http://dev.mysql.com/doc/mysql/en/innodb-f...ragmenting.html
Jarod
Cytat(SongoQ @ 2005-05-09 20:27:28)
@J4r0d
Cytat
@Diwi: sprawdzałem - primary key nie jest automatycznie ustawiany na 1


Primary key sie nie ustawia tylko wartosc autoindex(auto_increment).
Mozesz ewntualnie po TRUNCATE TABLE `tabela` wywolac ALTER TABLE `tabela` TYPE = InnoDB wtedy wartosc ustawi sie na 1.

Oczywiscie to dla InnoDB

http://dev.mysql.com/doc/mysql/en/innodb-f...ragmenting.html

Chodziło mi o wartość. Po Truncate wykonuje
  1. ALTER TABLE logi AUTO_INCREMENT = 1;


Pozdrawiam
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.