powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Композитные типы данных.
14 сообщений из 14, страница 1 из 1
Композитные типы данных.
    #34884737
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. All.

Столкнулся с необходимостью использования композитных типов данных. Но в русскоязычной документации
о них почти ничего нет. Ткните где можно почитать о их использовании. То есть
1. Создание
2. Чтение запись.
3. Создание для них индексов.
4. Использование их в триггерах и хранимках.

Буду благодарен тем кто наставит на путь истинный. Если возможно дока с примерами буду безмерно признателен.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34885189
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После поиска и анализа, натолкнулся на то что существуют два типа данных, которые
можно создать - это:
составной тип (наверное это массив, а может и нет)
внешний тип (пока не понял - но выглядит круто, нужно определять функции по работе с ним)

ЛЮДИ ! Где это описано и как это готовить (или жрать в сыром виде).
Полез в документацию - скоро вернусь.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34885265
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это снова Я.
С композитными типами данных в принципе понятно (хотя без реальных примеров)
Код: plaintext
1.
2.
3.
4.
CREATE TYPE inventory_item AS (
    name            text,
    supplier_id     integer,
    price           numeric
);
Создали новый тип.
Код: plaintext
1.
2.
3.
CREATE TABLE on_hand (
    item      inventory_item,
    count     integer
);
Создали таблицу.
Код: plaintext
INSERT INTO on_hand VALUES (ROW('fuzzy dice',  42 ,  1 . 99 ),  1000 );
Вставили запись.
Код: plaintext
1.
CREATE FUNCTION price_extension(inventory_item, integer) RETURNS numeric
AS 'SELECT $1.price * $2' LANGUAGE SQL;
Используем в хранимках, вьюхах, и т.д. по вкусу.
С этим понятно, ясно и можно копать дальше.

А дальше ... Внешние типы данных и вот с ними в документации полный пипец, нет там ничего - вот о_О.
Как их создают, описвыают и как с ними работают. Ничего не нашел. Ткните кто знает.
Что никто не знает? Не верю.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34885340
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел в документации только чайную ложку инфы.
32.11. User-Defined Types
текста на одну страницу :) ну это же фигня полная а ....
Кстати есть ли у кого переведенная часть документации
CREATE TYPE
Поделитесь пожалуста.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34886576
ЯЕХХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Реально создавать новые типы смогут те, кто хорошо знаком с внутренностями сервера и с Си "на ты".
Лучшая документация для них - исходники и списки рассылки.
В User-Defined Types дана ссылка на src/tutorial.
Можно также некоторые из contrib-ов поглядеть.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34886767
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Соответственно для нас простых смертных.
Осталась только возможность использовать композитные типы данных. А вообще то
я интересуюсь документацией по этому вопросу, только из-за того что нет времени копаться в
сорцах ПГ и думается что у кого нибудь это есть. Ведь обычный пример создания нового внешнего типа с
комментариями даст огромное кол-во информации (но только если пример полный и комментарии достаточно обширны).
Засим позвольте раскланяться. С благоговением жду мецената, поделящегося информацией в этом вопросе .
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34886768
Rastafarra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раз такое дело... а можно в столбце хранить разные типы?
в смысле вот так вот хочется, чтобы отрабатывало:
Код: plaintext
1.
2.
INSERT INTO on_hand VALUES (ROW('fuzzy dice',  42 ,  1 . 99 ),  1000 );
INSERT INTO on_hand VALUES (ROW( 42 , 'fuzzy dice',  1 . 99 ),  1000 );
INSERT INTO on_hand VALUES (ROW( 1 . 99 , 'fuzzy dice',  42 ),  1000 );
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34887138
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему нельзя ?
Я считаю можно и нужно.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34887145
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только привести эти типы в тип VARIANT и пожалуста. :)
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34887157
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используя преобразование типов.
Только зачем такое необходимо? У меня фантазия иссякла.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34887389
Rastafarra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAG~sТолько зачем такое необходимо?

а как еще представить переменный набор полей? у меня есть случаи, когда количество полей заранее не известно. делать для разных случаев таблички? имхо было бы здорово вот так вот хранить в базе. имхо конечно :)

или есть более другие способы хранить переменный набор данных? заранее: xml не предлагать.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34887562
TAG~s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Древовидную концепцию организации данных в СУБД еще никто не отменял. Можно пользоваться в этом направлении.
А можно использовать тип VARIANT (еще раз повторюсь). Формат хранения выбрать PLAIN (текстовый) и в зваисимости
от параметров преобразовывать из текстового в числовой и обратно.
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34887571
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотри в папке contrib - модуль hstore
как раз то что тбе нужно - хранение в одном поле асоциированного массива.
там же в контрибах можно найти и методы индексации полей типа hstore..
или опять не то?
...
Рейтинг: 0 / 0
Композитные типы данных.
    #34887914
Rastafarra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAG~sФормат хранения выбрать PLAIN (текстовый) и в зваисимости
от параметров преобразовывать из текстового в числовой и обратно
palin text не очень интересно, потому как хочется еще и джоинить поля.
т.е.
Код: plaintext
select t1.*, t2.* from table1 t1 inner join table2 t2 on t1.id=t2.struct.id
была бы просто песня.

domanixСмотри в папке contrib - модуль hstore
как раз то что тбе нужно - хранение в одном поле асоциированного массива.
там же в контрибах можно найти и методы индексации полей типа hstore..
хм... может быть. взгляну, спасибо :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Композитные типы данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]