который передает в функцию значение OLD. В документации сказано, что OLD - это переменная типа record. пусть, например она будет (10,иванов ,вася) . Вот как бы эту переменную поместить в массив поэлементно вот так - [10] [иванов] [вася]. Сразу скажу, что array_agg(OLD.*) дает массив [10,иванов ,вася]. Может есть какой то синтаксис или команда, которая делает именно то что мне надо?
Зубчатого массива да ещё и с индексами, отличными от int4 в PostgreSQL нет. Каких-то hashmap/hashdict тоже (которыми можно было бы напрямую оперировать). Навскидку, самое близкое, что могло бы тут подойти "из коробки" (с точки зрения структуры данных), это JSON(B). То есть необходимо создать объект вида: { "10": { "иванов": { "вася": { ... } } } } Но, кстати, зачем? Или я может быть вас не так понял? upd.: Может, вам нужно: [[10], ["иванов"], ["вася"]] (что тоже сомнительно) ?
Чем плоха передача old.* в функцию? funct(old.*) ?
ЯННП. Кажэтся, вы спутали синтаксис для массивов в постгресе
да нет, зачем зубчатый. Одномерный массив с количеством элементов по числу полей
Чем тогда [10,"иванов" ,"вася"] то не угодил?
Может неправильно объяснил. тем что это массив, где в 1 ячейке - строка со всеми значениями запроса через запятую . а надо в 3 ячейках - в каждой свое значение. в Вашем синтаксисе он не [10,"иванов" ,"вася"] а ["10,иванов,вася"]
А, ну, как-то так (достаточно "грязный" способ, кстати). Или, если можете позволить себе поставить стандартное расширение hstore (подозреваю, это более эффективный способ): CREATE EXTENSION hstore; SELECT avals(hstore(tbl)) from tbl;
спасибо, да прикольно. Я получил, что хотел, благодаря Вам, но проще)) Вообще так как OLD - это RECORD, а RECORD - это ROW тип, то row_to_json(OLD) дает мне прекрасно структурированный JSON, а дальше я с ним что хочу то и делаю. Спасибо за идею.
А, ну, кто-ж знал, что вам не обязательно массив нужен на выходе. Успехов!
Обсуждают сегодня