Padec proti Truncateu

Drop and Truncate sta dva stavka SQL (strukturiran jezik poizvedb), ki se uporabljata v sistemih za upravljanje podatkovnih baz, kamor želimo odstraniti zapise podatkov iz baze podatkov. Tako stavki Drop kot Truncate odstranita celotne podatke v tabeli in s tem povezano stavek SQL. Operacija brisanja v tem primeru ni učinkovita, ker uporablja več prostora za shranjevanje kot Drop and Truncate.

V primeru, da želimo tabelo v zbirki podatkov zavreči skupaj z vsemi njenimi podatki, nam SQL omogoča enostavno izvedbo tega s stanjem Drop. Ukaz Drop je ukaz DDL (Data Definition Language) in ga lahko uporabite za uničenje obstoječe baze podatkov, tabele, indeksa ali pogleda. Iz baze podatkov izbriše celotne informacije in strukturo tabel. Prav tako se bomo morda želeli znebiti vseh podatkov v tabeli preprosto, vendar brez tabele in v takem scenariju lahko uporabimo stavek Truncate v SQL-u. Truncate je tudi ukaz DDL in odpravlja vse vrstice v tabeli, vendar ohrani definicijo tabele enako za prihodnjo uporabo.

Ukaz spustite

Kot smo že omenili, ukaz Drop odstrani definicijo tabele in vse njene podatke, omejitve integritete, indekse, sprožilce in privilegije dostopa, ki je bil ustvarjen v tej določeni tabeli. Torej obstoječi predmet v celoti izpusti iz baze in tudi odnosi do drugih tabel po izvedbi ukaza ne bodo več veljavni. Prav tako odstrani vse podatke o tabeli iz podatkovnega slovarja. Sledi tipična sintaksa za uporabo stavka Drop na tabeli.

DROP TABELA

Preprosto moramo nadomestiti ime tabele, ki ga želimo odstraniti iz baze podatkov v zgornjem vzorcu ukaza Drop.

Pomembno je poudariti, da stavka Drop ni mogoče uporabiti za brisanje tabele, na katero se je že sklicevala omejitev tujega ključa. V tem primeru bi bilo treba najprej opustiti omejitev tujega ključa ali to posebno tabelo. Izkaza Drop tudi ni mogoče uporabiti na sistemskih tabelah v bazi podatkov.

Ker je ukaz Drop izjava o samodejnem zagonu, operacije, ki je enkrat sprožena, ni mogoče vrniti nazaj in sprožilci ne bodo sproženi. Ko tabela izpade, vsa sklicevanja na tabelo ne bodo veljavna, zato jo je treba znova uporabiti z vsemi omejitvami integritete in pravicami dostopa, če želimo ponovno uporabiti tabelo. Vsa razmerja do drugih tabel, prav tako je treba znova najti.

Urezovanje ukaza

Ukaz Truncate je ukaz DDL in odstrani vse vrstice v tabeli brez določenih uporabniških pogojev in sprosti prostor, ki ga uporablja tabela, vendar struktura tabele s svojimi stolpci, indeksi in omejitvami ostane enaka. Truncate odstrani podatke iz tabele, tako da se v dnevniku transakcij shranijo podatkovne strani, ki se uporabljajo za shranjevanje podatkov tabele, in le te premestitve strani. Torej uporablja manj virov dnevnika transakcij in sistemskih virov v primerjavi z drugimi povezanimi ukazi SQL, kot je Delete. Torej je Truncate nekoliko hitrejši stavek kot drugi. Sledi tipična sintaksa za ukaz Truncate.

TRUNCATNA TABELA

V zgornji skladnji bi morali zamenjati ime tabele, iz katere želimo odstraniti celotne podatke.

Truncate ni mogoče uporabiti na tabeli, na katero se sklicuje omejitev tujega ključa. Preden začne delovati, samodejno prevzame obveznost, nato pa še eno zavezo, tako da povratni posel transakcije ni mogoč, sprožilci pa se ne sprožijo. Če želimo tabelo ponovno uporabiti, moramo samo dostopati do obstoječe definicije tabele v bazi podatkov.

Kakšna je razlika med Dropom in Truncateom?

Ukaza Drop in Truncate sta ukaza DDL in tudi samodejno zavezujeta izjave, zato transakcij, izvedenih s temi ukazi, ni mogoče vrniti nazaj.

Primarna razlika med Drop in Truncate je v tem, da ukaz Drop odstrani ne le vse podatke v tabeli, ampak tudi trajno odstrani strukturo tabele iz baze podatkov z vsemi referencami, medtem ko ukaz Truncate odstrani le vse vrstice v tabeli in ohranja strukturo tabel in njene reference.

Če tabela izpade, razmerja do drugih tabel ne bodo več veljavna, prav tako pa bodo odstranjene tudi omejitve integritete in pravice dostopa. Če je tabela potrebna za ponovno uporabo, jo je treba rekonstruirati z razmerji, omejitvami integritete in tudi pravicami dostopa. Če pa je tabela okrnjena, struktura tabele in njene omejitve ostanejo za prihodnjo uporabo, zato za ponovno uporabo ni potrebna nobena od zgornjih omejitev.

Ko uporabimo te ukaze, moramo biti previdni, če jih uporabljamo. Prav tako bi morali bolje razumeti naravo teh ukazov, kako delujejo, pa tudi nekaj skrbnega načrtovanja, preden jih uporabimo, da preprečimo, da ne bi izpustili bistvenega pomena. Na koncu lahko oba ukaza uporabimo za hitro in enostavno čiščenje baz podatkov, pri čemer porabimo manj sredstev.