Овај пост ће расправљати о уметању новог реда само ако подаци већ не постоје у МиСКЛ табели. Пре него што почнете са овом објавом, уверите се да сте пријављени на свој МиСКЛ локални сервер и да сте изабрали базу података у којој желите да радите.
Уметните нови ред само ако подаци не постоје помоћу изјаве „ИНСЕРТ ИГНОРЕ“.
Па, одговор на питање из наслова је прилично једноставан и јасан. Једноставно користите „ ИНСЕРТ ” кључна реч заједно са „ ИГНОРЕ ” Кључна реч. Ово ће осигурати да се нови подаци или упит за уметање извршавају само када ниједан претходни унос података није пронађен у МиСКЛ-у. Да бисте добили кратак преглед овога, погледајте следећу синтаксу:
ИНСЕРТ ИГНОРЕ У [ сто - име ] ( [ колона1 - име ] , [ колона2 - име ] , [ колона3 - име ] ) ВРЕДНОСТИ ( [ вредност1 ] , [ вредност2 ] , [ вредност3 ] ) ;
Погледајмо пример ако корисник жели да унесе вредност реда „ 1 ”, “ Јохн ' и ' Дое ” у „ Цустомер ” табела за колоне “ Ид ,” “ Име ' и ' Презиме ' редом. Покрените овај упит да бисте уметнули ове вредности ако их има ако већ не постоји ред са овим вредностима:
СЕЛЕЦТ * ИЗ Купац;
ИНСЕРТ ИГНОРЕ У Цустомер ( Ид , Име , Презиме ) ВРЕДНОСТИ ( 1 , 'Јован' , 'срна' ) ;
Излаз садржи две табеле које приказују податке табеле пре и после извршавања упита. Можете приметити да се ништа не мења у табели јер је ред већ постојао тако да је МиСКЛ успешно игнорисао процес уметања без приказа грешке:
Уметните нови ред само ако подаци не постоје користећи клаузулу „ГДЕ НЕ ПОСТОЈИ“
У МиСКЛ-у, „ ГДЕ НЕ ПОСТОЈИ ” клаузула спречава уметање редова ако већ постоје у табели када се користи у „ ИНСЕРТ ИНТО ” израз са потупитом за дефинисање услова. Када се ова клаузула користи са потупитом „ (СЕЛЕЦТ * ФРОМ [име-табеле] [име-колоне]=[израз]); ” проверава да ли у табели постоји ред који испуњава услов. Ако постоји ред, „ ГДЈЕ НЕ ПОСТОЈИ ” клаузула ће вратити лажну вредност, а „ СЕЛЕЦТ ” израз неће вратити ниједан ред. Као резултат, ред неће бити уметнут у табелу. Синтакса је дата у наставку:
ИНСЕРТ У [ сто - име ] ( [ колона1 - име ] , [ колона2 - име ] , [ колона3 - име ] )СЕЛЕЦТ [ вредност1 ] , [ вредност2 ] , [ вредност3 ]
ГДЕ НЕ ПОСТОЈИ ( СЕЛЕЦТ * ИЗ [ сто - име ] [ колона - име ] = [ израз ] ) ;
Хајде да видимо пример ако корисник жели да убаци ред у табелу запослених који садржи вредности „ 1 ”, “ Американац ' и ' Хенриот “ у колонама “ ид ”, “ Име компаније ' и ' Контакт Име ' редом. Али само ако је ред са ИД-ом „ 1 ” се не налази у табели или не постоји. У том конкретном случају, упит ће бити:
СЕЛЕЦТ * ИЗ запослени;
ИНСЕРТ У запослени ( ид , Име компаније , Контакт Име )
СЕЛЕЦТ 1 , 'Американац' , 'Хенриот'
ГДЕ НЕ ПОСТОЈИ ( СЕЛЕЦТ * ИЗ запослени ГДЕ ид = 1 ) ;
Излаз приказује нови ред који није уметнут као ред са „ ид ' једнако ' 1 ” је већ постојао.
Уметните нови ред само ако подаци не постоје користећи клаузулу „ОН ДУПЛИкат КЉУЧА АЖУРИРАЊЕ“
Па, други начин је да користите „ НА АЖУРИРАЊЕ ДУПЛИКАТА КЉУЧА ” клаузула у МиСКЛ. Пошто ће се ова клаузула користити са упитом „ИНСЕРТ ИНТО“ који формира „иф-елсе“ извршење. То значи да ће подаци унутар табеле бити ажурирани само ако су јединствени. У супротном, до промене не би дошло. Општа синтакса за ово је следећа:
ИНСЕРТ У [ сто - име ] ( [ колона1 - име ] , [ колона2 - име ] , [ колона3 - име ] ) ВРЕДНОСТИ ( [ вредност1 ] , [ вредност2 ] , [ вредност3 ] )НА ДУПЛИЦАТЕ КЉУЧ АЖУРИРАЊЕ [ колона1 - име ] = [ колона1 - име ] ;
Хајде да видимо пример, да убацимо вредности у „ 2 ”, “ Пасцале ”, “ Никон ”, “ Лондон ”, “ УК ' и “(171) 555-7788 ' у табели ' Цустомер “ за колоне “ Ид ”, “ Име ”, “ Презиме ”, “ град ”, “ земља ' и ' телефон ' редом. Ако ред већ не постоји, биће уметнут. У супротном, ажурираће вредности где је „ Ид=Ид ” услов испуњава. Покрените овај упит:
СЕЛЕЦТ * ИЗ Цустомер ;ИНСЕРТ У Цустомер ( Ид , Име , Презиме , град , земља , телефон )
ВРЕДНОСТИ ( 2 , 'Пасцале' , 'Никон' , 'Лондон' , 'УК' , '(171) 555-7788' )
НА ДУПЛИЦАТЕ КЉУЧ АЖУРИРАЊЕ Ид = Ид;
Ово је табела пре покретања упита, можете видети „ Ид ' једнако ' 2 ' не постоји:
Након покретања упита, овај упит ће уметнути нове редове у табелу:
Успешно сте убацили нови ред, пошто подаци не постоје пре покретања упита.
Закључак
У МиСКЛ, уметните нови ред само ако подаци већ не постоје користећи „ ИНСЕРТ ИГНОРЕ ” изјава или “ ГДЈЕ НЕ ПОСТОЈИ “ клаузула у “ ИНСЕРТ ИНТО ' изјава. Други начин да се то уради је коришћење „ НА АЖУРИРАЊЕ ДУПЛИКАТА КЉУЧА “ клаузула у “ ИНСЕРТ ИНТО ” за ажурирање ако ред већ постоји. У супротном, додајте нови ред. У посту се говорило о томе како уметнути нови ред само ако подаци не постоје.