Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> logowanie, historia logowań
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


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?

Ten post edytował J4r0d 3.05.2005, 15:27:11


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
SongoQ
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Dziwne bo takie cos sie gdzies indziej stosuje.

Wykorzystaj cos takiego
  1. ALTER TABLE twoja_tabela AUTO_INCREMENT = wartosc


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #3





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


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?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Np podczas dodawania rekordu.


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





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


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
Go to the top of the page
+Quote Post
Jarod
post
Post #6





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


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


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
SongoQ
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@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


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #8





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


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


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
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: 20.08.2025 - 12:09