Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak ustalić długosć identyfikatora?
Forum PHP.pl > Forum > Bazy danych
jolam
W mojej bazie danych SQLite dobiera identyfikatory dla nowych rekordów po kolei od 1, a czy można zrobić aby dobierał od 1000? Czyli żeby wszystkie miały 4cyfry? Np 1000, 1001, 1002, albo 0001, 0002, 0003? Przyadłoby mi się to do drzrewek ip. Aby dało się sensownie sortować wedle tych ip.

pozdrawiam Jola
erix
Cytat
Przyadłoby mi się to do drzrewek ip. Aby dało się sensownie sortować wedle tych ip.

To znaczy?
wookieb
Cytat(erix @ 8.08.2009, 20:09:26 ) *
To znaczy?

Problem z naturalnym sortowaniem ciągów tekstowych

Co do tematu proponuję wykonać coś takiego w php http://pl2.php.net/manual/pl/function.str-pad.php
jolam
wookieb właśnie o to sortowanie chodzi! Tą funkcje PHP znam. Ale wolałabym, żeby zrobić to w samym SQL. Używam SQLite, czy da się już przy deklarowaniu kolumny ustawić PRIMARY KEY z zerami na początku, czyli 0001, 0002, 0003? Albo jak ustawić startowy identyfikator na 1000? Wtedy miałabym 1001, 1002,1003.

pozdrawiam i proszę gorąco o odpowiedź Jola
zegarek84
ale jeśli ustawisz pole na PRIMARY KEY AUTOINCREMENT i pierwszy wpis ręcznie na 999 to następne same będą kolejno czyli 1000 itd. - lub pierwszy wpis ręcznie na 1000 itd. - w każdym bądź razie tekst jest wolniejszy od liczb... a jeśli już bardzo chcesz operować na tekście to możesz akurat w sqlite do zapytań podpiąć własne zdefiniowane funkcje w php....
viking
Wstaw pierwszy rekord dla primary jawnie jako 1000.

  1. CREATE TABLE "test" ("id" INTEGER PRIMARY KEY NOT NULL , "test" VARCHAR);
  2. INSERT.... (1000, 'ss');
  3. INSERT....('yyy');
jolam
viking dziękuję Ci. Nie pomyślałam, a to faktycznie powinno zadziałać. Szkoda, że nie ma jakiegoś bardziej uniwersalnego rozwiązania, już na etapie deklarowania kolumny.

Czy mógłbyś zajrzeć rónież na
http://forum.php.pl/index.php?showtopic=127597&hl=

pozdrawiam Jola
maly_swd
  1. CREATE TABLE `test`.`tabelka` (
  2. `id` int(4) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
  3. PRIMARY KEY (`id`)
  4. ) ....


a czemu nie uzyc zerofill ? przeciez to idealne dla tego rozwiazania, deklaracja int(4) oznacza do ilu ma wypelniac zerami.
Jesli iD wstawimy 1 to dostaniemy 0001
viking
Pewnie dlatego że sqlite to nie mysql winksmiley.jpg
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.