Автор:
Оценка:
Опубликованно: 14.04.2009.
Язык: Латышский
Уровень: Университет
Литературный список: Нет
Ссылки: Не использованы
  • Конспект 'SQL pamati', 1.
  • Конспект 'SQL pamati', 2.
  • Конспект 'SQL pamati', 3.
  • Конспект 'SQL pamati', 4.
  • Конспект 'SQL pamati', 5.
  • Конспект 'SQL pamati', 6.
  • Конспект 'SQL pamati', 7.
Фрагмент работы

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;…

Коментарий автора
Atlants