Postgres про стандартна документация 9

UPDATE променя стойностите на посочените колони във всички редове, които отговарят на условието. Клаузата за SET трябва да бъдат посочени само тези колони, които ще бъдат променени; колони не е изрично модифицирани запазват предишните си стойности.

Промяна на редовете в таблицата, като се използва информация от други таблици в базата данни по два начина: с помощта на вложени заявки или уточняване на допълнителни маси в ОТ клауза. Изборът на предпочетения вариант зависи от конкретните обстоятелства.

ВРЪЩАНЕ клауза се посочва, че изявлението на актуализацията е да се изчисли и да се върнете стойностите за всяка всъщност променят линии. Изчислете в него може да бъде всеки израз, за ​​да колоните на таблицата приемник и / или колони от други таблици, посочени в ОТ. В този случай, новите (модифицирани) стойности на колоните на таблицата, за да бъдат използвани в експресията. ВРЪЩАНЕ списък има същия синтаксис като списъкът на SELECT.

За да изпълните тази команда, трябва да имате правото да актуализира на масата, или поне за колоните, изброени в променливата списъка. Трябва също така да има право да изберете всички колони, стойностите на които се прочитат в изразите или състояние.

Име (евентуално увеличен диаграмата) на масата, където се сменят редовете. Ако предната част на името на таблицата се добавя САМО. съответните редове се променят само по определената масата. Без САМО редове също са променени във всички таблици, наследена от определения. Ако е необходимо, след като името на таблицата, можете да укажете *. да се посочи ясно, че операцията засяга всички масата за дете. псевдоним

Алтернатива на името на таблицата приемник. Когато посочите име, той напълно се крие истинското име на таблицата. Например, заявка UPDATE на Mt. на AS е допълнителни компоненти изявление UPDATE трябва да се отнася до целевата таблица име е. вместо Foo. COLUMN_NAME

име на колона в TABLE_NAME на маса. Името на колона, ако е необходимо, могат да бъдат допълнени от наименованието на вградения областта или индекса в масива. Наименование на таблицата, за да добавите към името на колоната приемник не е необходимо - например запис UPDATE таблица_име SET table_name.col = 1 е наред. изразяване

Експресия, в резултат на което се определя на колоната. Можете да използвате предишните стойности на този и други колони в таблицата на този израз. DEFAULT

Задаване на стойност по подразбиране колона (която може да бъде NULL, а ако не е определено експресия по подразбиране за колоната). vlozhennyy_SELECT

SELECT подзаявка. издаване като изходни колони, както е посочено в предишния си списък колона в скоби. По този начин подзаявка трябва да бъдат получени най-много един ред. Ако тя произвежда един ред, стойности на колоната в нея се поставят в целевите колони; ако той не се връща низ, колоната приемник е настроен на NULL. Това подзаявка да се обърнете към предишната стойност на текущата променлива ред в таблицата. spisok_FROM

Списък на маса изрази, които осигуряват използване в клауза експресии къде и за присвояване на колоните от други таблици. Този списък е подобен на това, което е посочено в оферта предложи най ОТ SELECT изявление. Имайте предвид, че таблицата приемник е необходимо само да добавим, spisok_FROM когато образувайки затворен съединение (в този случай трябва да се появи в spiske_FROM под псевдоним). състояние

Израз, който връща булев тип стойност. Промяната ще губи само вода, за които този израз връща истина. cursor_name

Името на курсора, които ще бъдат използвани в състояние, при ТОК НА. С такова състояние, ще бъде променен ред, да се измъкнем от тази последна курсора. Курсорът трябва да се сформира поискване, да не прилага групиране в таблицата приемник на изявление на актуализация. Имайте предвид, че КЪДЕ ток не може да бъде определен заедно с Булева състояние. За повече информация относно използването на курсори с WHERE CURRENT OF, се отнасят за деклариране. vyrazhenie_rezultata

Израз, който се оценява и актуализира команда, за да се върне след всеки ред промени. Можете да използвате имената на всички колони в таблица или таблици TABLE_NAME на В този израз, изброени в от списъка. За да получите всички колони, можете да напишете *. imya_rezultata

Име, което му стълб замяна.

Информацията, представена

След успешното завършване, UPDATE команда връща етикет под формата на

Тук, броят показва броя на променени линии, включително и тези за промяна линия, ценности, които не се променят. Имайте предвид, че този брой може да бъде по-малък от броя на редовете, които отговарят на условието. когато промени се изхвърлят спусъка ПРЕДИ UPDATE. Ако номерът е 0, искането не се е променила един ред (това не е грешка).

Ако отчета за UPDATE съдържа предложение ВРЪЩАНЕ. резултатът ще бъде подобен на резултата от SELECT декларация (с едни и същи колони и ценностите, които се съдържат в списъка с ВРЪЩАНЕ), получени за редовете, които са се променили с тази команда.

Когато има предложение. таблица приемник е по същество свързани с таблиците, посочени в spiske_FROM. и всеки изход линия е операция съединение промяна в таблицата приемник. Прилагането Proposition ОТ. необходимо да се гарантира, че връзката е издала повече от един изход линия за всяка линия, която искате да промените. С други думи, целевата линия не трябва да бъде свързан към повече от един ред от други таблици. Ако това условие е нарушено, само един от свързващите линии ще се използва за промяна на целевата линия, но това, което не може да се прогнозира.

Поради тази несигурност е по-безопасно да се позове на други таблици в единствените под-заявки, въпреки че често е по-лошо, отколкото четат и по-бавно от връзката.

Променете думата Драматичния да Драматично в таблицата за милите колона филми.

Промяната на температурата и валежите нулиране на времето по подразбиране в един ред на таблицата.

Извършване на същата операция за получаване на модифицирани ключови думи:

Същата промяна чрез използване на алтернативен синтаксис към списъка на колони:

Увеличаване на продажбите брояч за мениджъра, отговарящ за компанията Acme Corporation, с помощта на предложения от.

Извършване на същата операция, с подзаявка в клаузата WHERE.

Промяна на името на контакт в таблицата на сметки (то трябва да е името назначен мениджър продажби):

Подобен резултат може да се получи чрез прилагане на съединението:

Въпреки това, ако продавачите .id - не е уникален ключ, вторият искане може да доведе до непредсказуеми резултати, докато първото искане е гарантирано да се хвърлят за грешка, ако намерите няколко записа с един номер. Освен това, ако съответният запис сметки .sales_id няма да намерите, първото искане ще напиша в име на поле NULL на, а вторият не се променя низа.

Обновяване на статистически данни в таблицата с обобщена информация в съответствие с текущите данни:

Направен е опит да се добави нов продукт с броя. Ако този пост вече съществува, вместо това, да се увеличи количеството на продукта в съществуващ запис. За да се приложи този подход, а не на търкалянето на цялата сделка, можете да използвате точка спаси:

Изменят вида колона филми на таблицата в линията, която в момента е c_films курсора.

съвместимост

Тази команда отговаря на стандарта SQL. с изключение на от и връщане. които са продължения на Postgres Pro. както и възможността да се прилага по отношение на актуализира с.

В някои други бази данни се подкрепят и от допълнително предложение. но се предполага, че таблицата приемник трябва отново да бъде споменато в това изречение. Postgres Pro поема ОТ клауза не е, така че бъдете внимателни, когато пренасянето приложения, които използват този език разширение.

Според стандарта, първоначалната стойност за вложените списък от имена на колони в скоби може да бъде всеки израз, изключителна ред с необходимия брой колони. Postgres Pro отнема тази стойност, тъй като само списък с изрази, затворени в скоби или SELECT. Променлива стойност на една колона може да бъде определена дума DEFAULT в случай, че списъкът на изразяване, но не в рамките на една вложени SELECT.