Avatar
archie777
Člen
Avatar
archie777:

ahoj

chci se optati.. pri mazaní z linqTosql pomoci DeleteonSubmit se mi záznam smaže, ale dalšímu záznamu se přidělí index o číslo vyšší, jam zajistit aby se datábáze "reindexovala" ? aby zkrátka měl nový záznam po smazání záznamu s id 3, taktéž id 3

zaznam 1 id 1
zaznam 2 id 2
zaznam 3 id 2

smazu ted zaznam 3

a nechci aby mel novy zaznam id 4, ale id 3

 
Odpovědět 24.3.2014 18:20
Avatar
Petr Domes (petrds):

Generuj si ID podle nejvyšší hodnoty ID co je v DB +1

Nyní se ti to ID automaticky generuje(parametr identity). To bude chtít asi zrušit.

Editováno 24.3.2014 19:43
 
Nahoru Odpovědět 24.3.2014 19:42
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na archie777
Jan Vargovský:

Todle se vůbec neřeší, prostě máš sekvence nebo automatické IDčka na tabulku a ty se generují, to že tam je mezera je úplně jedno. (možná mě z praxe někdo opraví, jak to doopravdy je, ale projíždět celou tabulku a hledat volné IDčka mi přijde jako hloupost)

 
Nahoru Odpovědět 24.3.2014 19:49
Avatar
Petr Domes (petrds):

Může se stát, že potřebuješ mít data indexovaná popořadě bez mezer.
"ale projíždět celou tabulku a hledat volné IDčka mi přijde jako hloupost"
Primární klíč je standardně indexován, takže vyhledání nejvyšší hodnoty ID není rozhodně hloupost.

Když by se ale smazal záznam, který není na konci(nejvyšší ID) tak to už je asi blbost hledat volné hodnoty ID.

Editováno 24.3.2014 20:04
 
Nahoru Odpovědět 24.3.2014 19:59
Avatar
archie777
Člen
Avatar
archie777:

já bych právě tohle potřeboval abych nemusel přepisovat velkou část kodu

potrebuju ty ID ty v db s necim ciselne porovnávat

ale delete záznamu vzdycky udela tu mezeru

potrebuju aby se ID generovalo automaticky, ale mezery to prepocitalo po kazdym submitu treba

jde to nejak rozumně?:D

 
Nahoru Odpovědět 24.3.2014 20:17
Avatar
Odpovídá na archie777
Petr Domes (petrds):

spíš bych nechal at se ID automaticky generuje a přidal nový sloupec, třeba fakeID a tenhle sloupec bych používal v kódu. Na přepočítání(fakeID) bych asi použil uloženou proceduru, nebo šlo by to i normálně v LINQu napsat. Záleží jak velkou to máš DB, počet přístupů, přidávání dat vs mazání... atd...

 
Nahoru Odpovědět 24.3.2014 20:49
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 6 zpráv z 6.