т.д.), т.е. все уровни адреса в одной куче. 1- субъект, 2 - район и т.д.
Я добавил в нее столбцы для фильтрации: c_region_code, c_district_code, c_city_code, c_place_code, c_street_code - которые по умолчанию null.
Потом сквозным апдейтом по уровню присвоил каждому уникальный код, например есть город - 1, город - 2, город - 3 / улица 1, улица 2 и т.д..
Получается дети должны наследовать код родителя и я подумал, что надо сделать рекурсивный update: https://pastebin.com/fkpp9RG0
В котором вывел таблицу - точно не уверен, что правильно и проставил коды родителей их детям.
Но получилось, что у региона не может быть кода района, и соответственно он null и null проставляется, т.е. затирает сквозную нумерацию.
Как бы от этого избавиться, как бы в запрос сделать условие, типо если у родителя null, а у ребенка не NOT NULL в этом случае не перезаписывать?
Есть ли какая-нибудь функция, чтобы ее воткнуть в оператор SET, если не null то не присваивать значение новое.
DO надо писать перед всей этой процедурой?
Хотя, можно и COALESCE(новое, старое)
Это вообще не процэдура.
Ну что там анонимное. В postgrese синтаксический сахар отсутствует напрочь =) . Чуть где скобочку не так поставил, сразу экцепшион ...
CASE -- макрос для выражэний. Почти что функцыя.
А COALESCE() -- вообще просто функцыя.
Обсуждают сегодня