Search  
Monday, December 09, 2019 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Resetare index ...
 Resetare index care se autoincrementeaza
 
 3/4/2012 11:56:03 PM
User is offlineucostea
1 posts


Resetare index care se autoincrementeaza
 (Romania)
Salutare! Problema mea suna in felul urmator: Ex. Am o tabela cu urmatoarele cimpuri:Id(Autoinc),Nume(varchar),prenume(varchar). sa presupunem ca am facut 4 inregistrari: 1 2 3 4 Daca sterg linia 3: 1 2 4 In urma unei inserari: 1 2 4 5 Poate cineva sa-mi explice cum sa fac ca indexul dupa inregistrarea propriu zisa sa arate: 1 2 3 4 Lucrez in VisualFoxPro 9.0 Multumesc anticipat!
 3/5/2012 9:32:41 AM
User is offlineDaniel Buduru
3513 posts
1st




Re: Resetare index care se autoincrementeaza
 (N/A)
Alter table tabela alter column ID i autoinc nextvalue 5
Alter table cere ca tabela sa fie deschisa in mod exclusiv.

Nu ai nevoie sa refaci secventa atunci cand stergi o inregistrare. Si nu trebuie sa contezi pe valori succesive ale unui camp autoincrement.



Daniel Buduru
 3/5/2012 10:39:29 AM
User is offlineGrigore Dolghin
3996 posts
www.class-software.ro
1st






Re: Resetare index care se autoincrementeaza
 (N/A)
O cheie primara, odata alocata, nu se mai realoca nimanui, niciodata. Scopul ei este sa identifice unic o anumita inregistrare. Userul n-o vede, de-aia nu trebuie sa te streseze faptul ca ai "gauri" in secventa. Sa-ti dau un exemplu de ce nu trebuie realocata:

Sa zicem ca ai un program cu care faci facturi. Id-ul 5 reprezinta frigidere si ai facturi in care apare id-ul ala. Daca realoci id-ul asta altui produs - ace cu gamalie, sa zicem - si faci facturi, e ok. Dar cand faci un istoric al vanzarilor o sa-ti iasa ca ai vandut saptespe' miliarde de frigidere, si de fapt alea sunt acele cu gamalie.

O cheie primara este creata pentru inregistrarea in care este stocata si dispare o data cu inregistrarea aia.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 3/5/2012 11:33:20 AM
User is offlineDoru Constantin
445 posts
2nd




Re: Resetare index care se autoincrementeaza
 (N/A) Modified By Doru Constantin  on 3/5/2012 2:20:38 PM)
Va dati seama da ca baiatul nu a pomenit nimic de cheie primara si ca ii raspundeti la o intrebare pe care nu a pus-o ;)

Poate ca vrea ca dupa stergerea inregistrarii tot id-ul mai mare decat id-ul sters sa fie decrementat cu o unitate.

Cred, totusi, ca il indreptati pe drumul cel bun ;)
 3/5/2012 2:41:02 PM
User is offlineGrigore Dolghin
3996 posts
www.class-software.ro
1st






Re: Resetare index care se autoincrementeaza
 (N/A)
Eu cred ca foloseste campul ala pe post de cheie surogat (cod de produs, cod de client, numar de document, whatever) si ca "gaura" nu se potriveste in logica de business.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 3/5/2012 3:57:33 PM
User is offlineMarian Dobre
612 posts
1st


Re: Resetare index care se autoincrementeaza
 (N/A)
In lumea bazelor de date apelativul ID se refera clar la un camp de tip cheie primara. Ea a fost conceputa pentru un anumit scop si e bina sa fie lasat asa. Mai ales ca informatia aia nu-i foloseste  nici programatorului nici utilizatorului. Incrementarea unui camp de tip autoinc se face dupa urmatoarele tipuri de operatii:
1) apend blank pe tabela chiar daca se renunta la actualizarea inregistrarii respective;
2) Insert into (comanda SQL);
3) descarcarea datelor dintr-un view in care s-au adaudat inregisrari noi.
Daca se lucreaza pe o vedere, adaugi o inregistrare in ea dupa care renunti la actualizarea ei cu TableRevert,.incrementrea nu mai are loc.Asta este singurul scenariu prin care poti sa minimalizazi obtinerea de gauri in secventa.

De fapt ce te intereseaza? (Campul Id este de fapt un cod <cod de gestiune, cod material etc>) Valorile din campul respectiv sa le gestionezi singur? Atunci fa-ti un algoritm prin care sa controlezi secventa respectiva. In acest cazprobabil ca vei avea alte tabele legate de asta prin codul respectiv. (legatura 1 la N). Asta inseamna ca schimbarea unei valorii in campul respectiv va genera schimbari in toate tabelele legate de aceasta pentru a se pastra integritatea referentiala.

Orice putere omeneasca este un compus de rabdare si de timp. Balzac
  Visual FoxPro  Baze de date, tabele, view-uri si indecsi  Resetare index ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement