МиСКЛ Инсерт Игноре Дуплицате Кеи

Mysql Insert Ignore Duplicate Key



У табелама или скуповима исхода често постоје опречни подаци. Такође је потребно много времена за исправљање, а често се морају избегавати поновљени записи. Идентификовање дупликата записа и њихово брисање из било које табеле је неопходно. У овом одељку биће објашњено како избећи појављивање дуплираних података унутар табеле и како уклонити тренутне дупле записе. У овом водичу ћете научити како да користите клаузулу ИНСЕРТ ИГНОРЕ да бисте избегли грешку.

Синтакса:

Ево синтаксе за упит ИНСЕРТ ИГНОРЕ.







>>ИНСЕРТ ИГНОРЕ ИНТО име_табеле(цол1, цол2, цол3)ВРЕДНОСТИ(валуе_лист),(валуе_лист),(валуе_лист);

УМЕТНИТЕ ИГНОРЕ преко Воркбенцха:

Отворите МиСКЛ Воркбенцх 8.0 са свог система и повежите га са инстанцом базе података.





У командној области морате креирати табелу Емплоиее са четири колоне где једна од њих мора бити наведена као УНИКУЕ. Испробајте доњи упит у области упита навигатора да бисте креирали ову табелу. Изаберите цео упит и кликните на знак фласх да бисте га извршили.





>>ЦРЕАТЕ ТАБЛЕ Емплоиее(ИД инт ПРИМАРНИ КЉУЧ НИЈЕ НУЛЛ, Назив варцхар(педесет)НОТ НУЛЛ, Аге Варцхар(педесет), Плата варцхар(педесет), ЈЕДИНСТВЕНО(ИД));

Након креирања, запосленог у табели можете пронаћи на листи под опцијом Табеле испод података базе података.



У мрежном приказу можете уносити записе без уписивања упита. Дакле, отворите мрежни приказ запосленика таблице и додајте му неке записе као што је приказано испод. Унели смо све јединствене записе без дупликата. Притисните дугме „Примени“ да бисте применили промене.

Отвориће се нови прозор са релевантним упитима везаним за горе наведене записе. Овај екран се може назвати екраном за преглед. Ако желите нешто да промените, можете то учинити овде. У супротном, притисните дугме Примени да бисте извршили упите.

Као што видите, упит је успешно извршен и записи су сачувани у бази података и њеној табели Емплоиее. То би генерисало грешку да смо додали било коју дуплирану вредност у ИД колоне. Додирните дугме Заврши.

Ово је све о приказу мреже. Сада ћемо уметати записе кроз област упита. У међувремену, овај пут смо убацивали дупликате записа да бисмо проверили излаз. Дакле, испробали смо доњи ИНСЕРТ упит, где имамо две листе вредности. Обе листе вредности имају исту вредност у колони „ИД“. Одаберите упит и притисните знак фласх да бисте извршили упит.

Упит неће радити исправно и генерисаће грешку због дуплираних вредности у команди ИНСЕРТ како је приказано на слици.

Сада испробајте исти горњи упит са клаузулом ИНСЕРТ ИГНОРЕ и изведите га како је приказано.

Можете видети да не генерише грешку у излазном подручју, али даје упозорење да команда садржи дупле вредности.

Освежите приказ мреже запосленог у табели. Упит ИНСЕРТ ИГНОРЕ је упола успео. Уметнуо је прву листу вредности у табелу, али је друга листа вредности занемарена због понављања вредности 13.

УМЕТНИТЕ ИГНОРЕ преко љуске командне линије:

Да бисмо разумели овај концепт, отворимо МиСКЛ клијентску љуску командне линије у вашем систему. По упиту унесите своју МиСКЛ лозинку да бисте почели да радите на њој.

Сада је време за креирање табеле. Испробајте наредбу испод да бисте то урадили. Направили смо табелу под називом „министар“, док једна од њених колона има ЈЕДИНСТВЕНО ограничење. Јасно је да ће ИД колоне прихватити само јединствене вредности, а не и дупле вредности.

>>ЦРЕАТЕ ТАБЛЕ дата.министер(Средина ИНТ ПРИМАРНИ КЉУЧ ЈЕДИНСТВЕН НИ НУЛА, Име ВАРЦХАР(Четири, пет), Град ВАРЦХАР(Четири, пет));

Упит ради на одговарајући начин и табела је направљена. Да бисте разумели клаузулу ИНСЕРТ ИГНОРЕ, морате прво видети да ради једноставна команда ИНСЕРТ. Ако користите команду ИНСЕРТ за уметање неколико података у табелу, МиСКЛ обуставља трансакцију и генерише изузетак ако дође до грешке током обраде. Као последица тога, табели нема додатих редова. Уметнимо први запис у табелу министра користећи доле приказани упит. Упит ће успешно радити јер је табела тренутно празна и не постоји запис са којим би се могло упоредити.

Пошто је ИД колоне УНИКУЕ, када испробамо инструкцију испод на љусци командне линије, она ће генерисати грешку. То је зато што смо додали вредност 11 у претходном упиту, а због УНИКУЕ кључа не дозвољава нам да поново додамо поновљену вредност.

Дакле, приликом провере табеле можемо видети да табела има само 1 запис који је додао први ИНСЕРТ упит.

>>СЕЛЕЦТ*ФРОМ дата.министер;

Насупрот томе, ако користите клаузулу ИНСЕРТ ИГНОРЕ, нетачни редови података који покрећу грешку биће занемарени и унеће само тачне. У наредби испод користили смо команду ИНСЕРТ ИГНОРЕ да бисмо избегли додавање поновљених вредности у табелу и превидели грешку. Као што видите, прва листа вредности има дупликат вредности 11 исти као у претходном упиту. Док је друга листа вредности јединствена, она ће приказати 1 запис уметнут у табелу, што је друга листа вредности. МиСКЛ такође указује на то да је уметнут само 1 запис, а у поруци је генерисано 1 упозорење. Тада можете претпоставити да ако користимо клаузулу ИНСЕРТ ИГНОРЕ, МиСКЛ пружа упозорење.

Као што видите из доњег приказа, у овој табели имамо само два записа - прву листу вредности наведених у горњем упиту, која се занемарује.

>>СЕЛЕЦТ*ФРОМ дата.министер;

Закључак:

Урадили смо све потребне примере ИНСЕРТ ИГНОРЕ на дуплираним вредностима путем МиСКЛ Воркбенцх-а и МиСКЛ клијентске љуске командне линије.