MySQL auto increment a tinyint

Programovacie jazyky, rady, poradňa...
Shakal
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 31 jan 2006, 18:54

MySQL auto increment a tinyint

Príspevok od používateľa Shakal »

Sorry mozno za blbu otazku. V tychto veciach som este lamer.
Ale povedzme, ze:

Kód: Vybrať všetko

CREATE TABLE Product
(
   ID TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
   Name VARCHAR(40) NOT NULL,
   PRIMARY KEY (ID)
);
a

Kód: Vybrať všetko

@$sql="insert into Product values('','$nazov_produktu');
tinyint = 0-255 (range)

Mam dve otazky.

1/ Co ak budem chciet pridat do DB 256sty zaznam?
2/ To auto increment,,, v pripade, ze niektore zaznamy (napriklad) s ID 5,10 a 145 budu zmazane - dokaze auto_increment vyuzit ich "volne pozicie" v pripade, ze budem chciet pridat 256sty zaznam?

Ide mi o to, ze ak sa rozhodnem v PHP skriptoch odvolavat na urcite ID, tak ci sa mozem spolahnut nato, ze pri zmazani zaznamu s urcitym ID mi ho sql cez auto_increment zasa nezaplni?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

1/ čaká ťa chybová hláška a záznam sa nepridá
2/ už si si odpovedal, samozrejme že nezaplní, bude pokračovať indexom aký má v svojom počítadle na rade.
Shakal
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 31 jan 2006, 18:54

Príspevok od používateľa Shakal »

audiotrack napísal:1/ čaká ťa chybová hláška a záznam sa nepridá
2/ už si si odpovedal, samozrejme že nezaplní, bude pokračovať indexom aký má v svojom počítadle na rade.
Dobre.
A existuje nejaka moznost ktorou by zacal auto_increment vyplnat volne ID?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

nepoužívať autoincrement, a riešiť si to programovo (nájdeš prvé volné id a to použiješ). Také čosi by som ale nerobil, lebo prichádzaš o relačnosť a celý tvoj model sa stáva náchylným na vznik tzv. anomálii. Ak ti nestačí 255 záznamov, tak používaj int namieto tinyint
Shakal
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 31 jan 2006, 18:54

Príspevok od používateľa Shakal »

njn.
ale co je krajsie

Kód: Vybrať všetko

http://moja.domena.sk/?q=255
alebo

Kód: Vybrať všetko

http://moja.domena.sk/?q=2147483647
Samozrejme, ze budem musiet pouzit int ale tie zaznamy sa budu tak casto pridavat a mazat, ze jedneho pekneho dna sa na tych 2147483647 urcite ocitnem.

Potom snaad uz len bigint :D

Kód: Vybrať všetko

http://moja.domena.sk/?q=9223372036854775807
:smt023
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ja v tom nevidím žiaden rozdiel, ak sa na to mám pozerať štýlom "čo je krajšie". Viem ale ktorú voľbu by som si bez váhania zvolil :) Mám ale tušenie že tvoja db nie je najlepšie navrhnutá, ale to časom zbadáš

btw: int je do 4294967295 a nie 2147483647 ako si písal, neverím že používaš signed. A keď hej, tak s tvojími otázkami už nechcem mať nič spoločné :D
Shakal
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 31 jan 2006, 18:54

Príspevok od používateľa Shakal »

audiotrack napísal:ja v tom nevidím žiaden rozdiel, ak sa na to mám pozerať štýlom "čo je krajšie". Viem ale ktorú voľbu by som si bez váhania zvolil :) Mám ale tušenie že tvoja db nie je najlepšie navrhnutá, ale to časom zbadáš
btw: int je do 4294967295 a nie 2147483647 ako si písal, neverím že používaš signed. A keď hej, tak s tvojími otázkami už nechcem mať nič spoločné :D
Aha jasne.
Ja som tie cisla odkukoval z jednej tabulky, tam boli signed.
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Príspevok od používateľa Mmartin »

skús to takto

Kód: Vybrať všetko

CREATE TABLE Product
(
   ID int(10) NOT NULL AUTO_INCREMENT primary key,
   Name VARCHAR(40) NOT NULL,
   PRIMARY KEY (ID)
); 
a nasledne

Kód: Vybrať všetko

mysql_query("INSERT INTO `Product` (Name) VALUES ('$premenna')");
ID mas auto increment, takze cislo sa prida automaticky, cez Query ho teda hadzat nemusis
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

Martin, ty zase nie si v obraze :D
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

audiotrack napísal:Martin, ty zase nie si v obraze :D
ale zato odpovedal v každej teme 8) no borec :)
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Príspevok od používateľa Mmartin »

tss
No, snažím sa pomôcť, ale niekedy trepnem fakt debilinu :)
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

Mmartin napísal:tss
No, snažím sa pomôcť, ale niekedy trepnem fakt debilinu :)
to sa stava,ja tu mam tiez par krasných zapekov :oops:
Napísať odpoveď