ПостгреСКЛ

ПостгреСКЛ додатак за сукоб

ПостгреСКЛ додатак за сукоб
Израз 'Упсерт' препознат је као спајање у РДБМС. 'Упсерт' је корисно имати са ПостгреСКЛ-ом ако не желите да се бавите јединственим грешкама због кршења ограничења због поновљених уноса. Када покренете генеричку УПДАТЕ наредбу, потребна подешавања ће се догодити само ако запис одговара стандардима наредби; ако такви подаци не постоје, онда се ништа не дешава. Када додате нови ред у табелу, ПостгреСКЛ ће га ажурирати ако је раније постојао, или ће уградити нови ред ако ред не постоји. СКЛ кључна реч 'Упсерт' комбинује речи „упдате“ и „инсерт“.”Овај чланак вам показује како функционише функција ПостгреСКЛ 'Упсерт', као и како се користи функција 'Упсерт' за додавање или ажурирање информација ако уметнути ред већ постоји у табели.

Синтакса

Следи синтакса упита 'Упсерт' ОН ЦОНФЛИЦТ.

>> ИНСЕРТ ИНТО име_табеле (листа_колона) ВАЛУЕ (листа_вредности) У КОНФЛИКТУ циљна акција;

Покрените шкољку командне линије ПостгреСКЛ

За почетак покрените љуску командне линије ПостгреСКЛ из менија Апплицатион. Повежите га са потребним сервером. Унесите име базе података на којем желите да радите. Да бисте радили на другом порту, унесите број порта и корисничко име са којим желите да радите. Да бисте наставили са подразумеваним параметрима, оставите размаке како јесу и притисните „Ентер“ при свакој опцији. Додајте лозинку за изабрано корисничко име и ваша командна љуска би требала бити спремна за употребу.

Пример 1:

Сада можемо да започнемо са сукобом „Упсерт“. Претпоставимо да у изабраној бази података имате табелу под називом „особа“ са неким пољима која приказују записе различитих особа. Ови записи показују имена људи, њихове старости и њихове градове и државе. Табела је приказана испод.

>> ОДАБЕРИ * ОД особе;

Важно је знати како може доћи до грешке или сукоба. Поље табеле 'ид', које је уједно и примарни кључ, садржи вредности од 1 до 15. Када корисник покуша да у табелу убаци неке дупликате записа, долази до сукоба.

Покушајмо са следећом изјавом ИНСЕРТ, убацујући записе у табелу „особа“. Овај упит ће проузроковати грешку јер вредност '3' поља 'ид' већ постоји у табели.

>> ИНСЕРТ ИНТО персон (ид, наме, аге, цити, цоунтри) ВРЕДНОСТИ ('3', 'Хабиб', '45', 'Цхаквал', 'Пакистан');

Пример 2: Подигните са клаузулом ОН ЦОНФЛИЦТ

Клаузулу ОН ЦОНФЛИЦТ ћемо користити да бисмо избегли ИНСЕРТ упит који узрокује ову грешку због уметања дуплираних записа. Команда ОН ЦОНФЛИЦТ има две фразе различитих употреба.

Пример 3: Подигните са клаузулом НЕ НИШТА

У овом примеру ћемо погледати клаузулу ДО НОТХИНГ. Ова клаузула објашњава да се неће извршити ниједна операција у случају грешке или сукоба. Другим речима, ова клаузула ће само избећи сукоб или грешку.

Дакле, покушајмо са истом наредбом ИНСЕРТ коју смо раније користили за додавање дупликата записа у табелу 'особа', уз неколико додатих промена. Додали смо клаузулу ОН ЦОНФЛИЦТ, заједно са наредбом ДО НОТХИНГ у овој клаузули. Клаузула ОН ЦОНФЛИЦТ примењена је на јединствени ступац 'ид'. То значи да ће, када корисник покуша да убаци дупликат вредности у колону 'ид', избећи сукоб и ништа не учинити. Као што можете видети на доњој слици, неће ни убацити нови запис у табелу, нити ће ажурирати претходни запис.

>> ИНСЕРТ ИНТО персон (ид, наме, аге, цити, цоунтри) ВРЕДНОСТИ ('3', 'Хабиб', '45', 'Цхаквал', 'Пакистан') О КОНФЛИКТУ (ид) НЕМОЈТЕ НИШТА;

Проверимо поново табелу „особа“ ради аутентичности. Као што видите на доњој слици, у табели нису унете промене.

>> ОДАБЕРИ * ОД особе;

Пример 2: Употријебите клаузулу ДО

Даље ћемо погледати клаузуле ОН ЦОНФЛИЦТ и ДО. Као што му име говори, клаузула ___ извршиће радњу у случају грешке или сукоба када се дупликата вредност убаци у табелу. Користићемо исту наредбу за уметање коју смо претходно користили за уметање дупликата записа у табелу 'особа', са мањом изменом. Додали смо клаузулу ОН ЦОНФЛИЦТ са клаузулом ДО унутар ње. Када корисник покуша да уметне нејединствену вредност у колону 'ид', извршиће акцију како би избегао сукоб. Користимо клаузулу УПДАТЕ након клаузуле ДО, која указује на ажурирање података у табели „особа“. Кључна реч СЕТ користи се за подешавање вредности колоне 'наме' на нову вредност, 'Хабиб', користећи кључну реч ЕКСЦЛУДЕД где је 'ид' тренутно '3'. Ако извршите следећи упит, видећете да је упит извршен.

>> ИНСЕРТ ИНТО персон (ид, наме, аге, цити, цоунтри) ВРЕДНОСТИ ('3', 'Хабиб', '45', 'Цхаквал', 'Пакистан') О КОНФЛИКТУ (ид) ДО АЖУРИРАНИХ СЕТ наме = ИСКЉУЧЕНО.име;

Записи табеле „особа“ морају да се преузму да би се виделе промене горњег упита. Ако извршите следећи упит у љусци командне линије, требали бисте видети следећи излаз.

>> ОДАБЕРИ * ОД особе;

Као што можете видети из доњег резултата, име особе је ажурирано на „Хабиб“, где је „ид“ „3.'

Такође можете ажурирати записе у више колона помоћу кључне речи ЕКСЦЛУДЕД у клаузули ОН ЦОНФЛИЦТ упита ИНСЕРТ, као што је приказано испод.

>> ИНСЕРТ ИНТО персон (ид, наме, аге, цити, цоунтри) ВАЛУЕС ('3', 'Хабиб', '45', 'Цхаквал', 'Пакистан') ОН ЦОНФЛИЦТ (ид) ДО УПДАТЕ СЕТ СЕТ наме = ЕКСЦЛУДЕД.име, град = ИСКЉУЧЕНО.град;

Промене су приказане у наставку.

>> ОДАБЕРИ * ОД особе;

Закључак

Овај чланак вам је показао како се користи ПостгреСКЛ 'Упсерт' са клаузулом ОН ЦОНФЛИЦТ, заједно са радњама ДО и ДО НОТХИНГ. Након читања овог чланка, надамо се да ћете лакше разумети како се користи ПостгреСКЛ 'Упсерт.'

Вулкан за кориснике Линука
Са сваком новом генерацијом графичких картица видимо да програмери игара помичу границе графичке верности и долазе на корак од фотореализма. Али упрко...
ОпенТТД вс Симутранс
Стварање сопствене симулације превоза може бити забавно, опуштајуће и изузетно примамљиво. Због тога морате да испробате што више игара како бисте про...
Водич за ОпенТТД
ОпенТТД је једна од најпопуларнијих игара за пословну симулацију. У овој игри морате створити диван посао превоза. Међутим, почет ћете у почетку око 1...