Autors:
Vērtējums:
Publicēts: 14.04.2009.
Valoda: Latviešu
Līmenis: Augstskolas
Literatūras saraksts: Nav
Atsauces: Nav
  • Konspekts 'SQL pamati', 1.
  • Konspekts 'SQL pamati', 2.
  • Konspekts 'SQL pamati', 3.
  • Konspekts 'SQL pamati', 4.
  • Konspekts 'SQL pamati', 5.
  • Konspekts 'SQL pamati', 6.
  • Konspekts 'SQL pamati', 7.
Darba fragmentsAizvērt

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 var tik pazaudēti svarīgi dati dēļ nepietiekamiem ierobežojumiem. Jums var rasties problēmas izdzēst ierakstu no kādas tabulas, ja uz šo ierakstu ir atsauce citā tabulā vai ierakstā, jums SQL serveris neļaus to izdarīt (MySQL gan neparedz ārējās atslēgas, tāpēc bez brīdinājuma var izdzēst arī to, uz ko rindas citās tabulās atsaucas). Mūsu piemērā par cilvēku un adresi, nevarēs izdzēst adresi, kurai adrese_id=1, ja tabulā cilveks ir ar šo adreses vērtību. T.i. nevajag dzēst adreses, ja ir cilvēki, kuriem šīs adreses ir vajadzīgas.

Labākais, ko šādā situācijā var darīt ir vispirms padarīt visus cilvēkus ar doto adresi par tādiem, kuriem adreses nav, un tikai tad dzēst adresi:

UPDATE cilveks SET id_adrese=-1 WHERE id_adrese=1;
DELETE adrese WHERE id_adrese=1;…

Autora komentārsAtvērt
Atlants