Komanda 'DELETE'

Last modified by superadmin on 2018-01-12 20:40

Komanda 'DELETE'

DELETE komanda ir paredzēta esošo datu dzēšanai. Komanda ir viena no vienkāršākajām un BĪSTAMAJĀKĀM SQL valodā, jo šī komanda parasti atļauta visiem lietotājiem. Tās konstrukcija ir:
DELETE [LOW_PRIORITY] FROM tbl_name
    [WHERE where_definition] [LIMIT rows]
Droši pamanījāt, ka WHERE daļa nav obligāta, tas nozīmē, ka pietiek jums aizmirst nodefinēt robežas, lai visi dati tiktu izdzēsti:
DELETE FROM cilveks
Tāpēc ļoti jāuzmanās ar šo komandu. Noteikti definējiet nepārprotamas komandas darbības robežas - citādi varam pazaudēt svarīgus datus nepietiekamu ierobežojumu dēļ. Jums var rasties problēmas izdzēst ierakstu no kādas tabulas, ja uz šo ierakstu ir atsauce citā tabulā vai ierakstā - tas pamatoti izraisa SQL servera kļūdu. Mūsu piemērā par cilvēku un adresi, nevarēs izdzēst adresi, kurai ID=1, jo uz to atsaucās gan Mikij Pele gan Donalds Daks. Kas jādara šādos gadījumos? Viena iespēja - izdzēst visus tabulas cilveks ierakstus, kuri atsaucas uz šo adrese ierakstu (datubāze par to nesūdzēsies, bet adreses iznīcināšana programmas loģikā parasti nenozīmē visu tajā dzīvojošo cilvēku iznīcināšanu). Noderīgāks variants mēdz būt visus ierakstus citās tabulās, kuros ir atsauce uz šo adreses ierakstu, pāradresēt uz kādu speciāli šim gadījumam paredzētu adreses ierakstu. Parasti tas ir klasifikatora ieraksts ar id=-1.
UPDATE cilveks SET id_adrese=-1 WHERE id_adrese=1; DELETE adrese WHERE id_adrese=1;
DELETE citas iespējas un parametrus sk. MySQL komanda DELETE.
Tags:
Created by Kalvis Apsītis on 2008-05-04 15:57
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation