label Cursuri autorenew 2025-09-29, 16:57
Alaturi de adaugare si modificare, stergerea reprezinta una din principalele operatii in lucrul cu bazele de date.

Stergerea unei inregistrari dintr-o baza de date se poate realiza la doua nivele:
- la nivel logic, cand inregistrarea nu este propriu-zis stearsa din baza de date ci ea este marcata intr-un anumit mod, indicand astfel aceasta stare a inregistrarii. Exista comenzi si functii FoxPro care, inainte de accesarea unei inregistrari testeaza marcajul de stergere al acestuia si, in functie de el, considera inregistrarea absenta sau prezenta in fisier;
- la nivel fizic, cand inregistrarea este stearsa efectiv din baza de date, ea neputand fi in nici un fel accesata sau refacuta.
Marcarea pentru stergere a uneia sau mai multor inregistrari se face cu ajutorul comenzii DELETE, ce are urmatoarea sintaxa:



DELETE
[<domeniu>] [FOR<expl1>] [WHILE<expl2>]
[NOOPTIMIZE]

<domeniu>, FOR ,WHILE identifica inregistrarile ce vor fi marcate pentru stergere, iar NOOPTIMIZE inhiba optimizarea Rushmore. Domeniul implicit al comenzii DELETE este inregistrarea curenta.
Accesul la inregistrarile marcate pentru stergere este controlat de comanda SET DELETED, care are urmatoarea sintaxa:
SET DELETED ON/OFF

Cand se alege optiunea ON, inregistrarile marcate pentru stergere nu vor fi accesibile celorlalte comenzi care folosesc domeniul inregistrarilor (<domeniu> FOR WHILE),iar cand este aleasa optiunea OFF, inregistrarile sunt accesibile indiferent de marcajul de stergere. Starea initiala este OFF.