Avatar
Wayne
Člen
Avatar
Wayne:

Ahoj, mohl by mi někdo poradit?Mám nastaveno že se mi bude ID sloupec automaticky inkrementovat od 1 a přičítat po 1, ale když to do tabulky vkládám pomocí dotazu, čísluje se to tam jak se tomu chce.

 
Odpovědět 23.9.2014 14:01
Avatar
Odpovídá na Wayne
Michal Štěpánek:

Jak, resp. kde jsi to nastavil? A jak to do té tabulky vkládáš?
Měl bys na SQL mít nastaveno na sloupec AutoIncrement ->True a při ukládání tento sloupec vůbec nezmiňovat, bo SQL server si to udělá sám.
Další otázka je, jak víš, že si to čísluje jak chce? Nemáš to ve výpisu jen špatně seřazené? Nemazal jsi náhodou nějakou položka a pak nevkládal novou? V takovém případě SQL již nepoužije tu smazanou hodnotu ID a pokračuje následujícím číslem...

Editováno 23.9.2014 14:20
Nahoru Odpovědět 23.9.2014 14:19
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Wayne
Člen
Avatar
Odpovídá na Michal Štěpánek
Wayne:

Nastavoval jsem to ve vlastnostech daného sloupce. Do tabulky to vkládám pomocí dotazu v MSSQL, ptž jsem plnil databázi nějakými testovacími daty, sloupec ID samozřejmě vím že se naplní automatiky. To že vím že se mi to čísluje špatně vidím když se podívám v dané tabulce na edit.

 
Nahoru Odpovědět 23.9.2014 14:30
Avatar
Odpovídá na Wayne
Michal Štěpánek:

když se podívám v dané tabulce na edit. Můžeš to nějak upřesnit? Když si vypíšeš data z té tabulky, tak jsou špatně číslovaná, nebo co? Hoď sem kus kódu, kterým to vypisuješ...
SQL v podstatě neumí špatně číslovat. Když si uložíš záznamy 1,2,3 a třeba trojku smažeš a vložíš další záznam, tak má číslo 4, když pak smažeš jedničku a vložíš další záznam, tak bude mít č.5

Editováno 23.9.2014 15:20
Nahoru Odpovědět 23.9.2014 15:17
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na Wayne
Nikola Sterziková (PaNika):

Ještě mě napadá jedna věc. Máš na sloupci ID nastaven primární klíč? Primární klíč vytvoří clustrovaný index a díky tomu při zobrazování záznamů bez ORDER BY se záznamy seřadí podle clustrovaného indexu (data jsou fyzicky na disku uložena v pořadí tohoto indexu) tedy podle vygenerovaných id-ček.
Pokud v tabulce nemáš clustered index, tak se ti záznamy nezobrazí seřazené podle ID, takže to může vyvolávat dojem, že to přiděluje čísla divně, ale není tomu tak.

Další možností je, že pokud selže vložení záznamu do db (díky třeba nějaké constraint, duplicetě apod), tak se "vypotřebuje" jedno ID-čko.
Např. poslední ID je 5, jeden insert selže, další vložení záznam má id 7...

 
Nahoru Odpovědět 24.9.2014 12:21
Avatar
Wayne
Člen
Avatar
Odpovídá na Nikola Sterziková (PaNika)
Wayne:

Primární klíč mám na sloupci nastavený. Mě se to inkrementuje správně, ale nějaká tabulka začíná od id = 30 jiná zase třeba od 8.

 
Nahoru Odpovědět 24.9.2014 14:19
Avatar
Odpovídá na Wayne
Nikola Sterziková (PaNika):

Tak to spíš vidím na selhané INSERTy při testování (vyplýtvala se ID), nebo jestli jsi nějaké záznamy nejdřív nevložil a pak smazal... Jednou použitá ID se už nikdy znovu automaticky nepoužijí...

 
Nahoru Odpovědět  +1 24.9.2014 14:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.