Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Документация PL/pgSQL  [new]
Jack963
Member

Откуда:
Сообщений: 17
Здравствуйте, сейчас читаю документацию, там есть пример:
Добавление в таблицу первичного ключа с автоматическим именем (учтите, что в таблице может быть только один первичный ключ):
ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

Возник вопрос, что значит с автоматическим именем?
17 июл 20, 13:04    [22169202]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1122
Jack963,

То есть название этого constraint и нижележащего индекса будет сгенерировано базой, а не указано пользователем.
17 июл 20, 13:28    [22169223]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Jack963
Member

Откуда:
Сообщений: 17
Melkij,

Спасибо
17 июл 20, 13:38    [22169232]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Jack963
Member

Откуда:
Сообщений: 17
Melkij, а есть ли индексные таблицы в PL/pgSQL ?
17 июл 20, 18:14    [22169454]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Павел Лузанов
Member

Откуда:
Сообщений: 722
Jack963,

Есть массивы составных типов.
17 июл 20, 18:24    [22169457]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4233
Jack963
Melkij, а есть ли индексные таблицы в PL/pgSQL ?


IOT которые? нет нету...
в теории можно covering index со всеми колонками сделать который для readonly будет почти тоже самое что IOT (только места в 2 раза больше занимать).
17 июл 20, 18:26    [22169459]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Jack963
Member

Откуда:
Сообщений: 17
Павел Лузанов,
Подскажите, пожалуйста, как тогда эта чать кода будет выглядеть в PL/pgsql:
DECLARE
--вводимая строка
type word is table of
varchar(200)
index by integer;
str_word word;--таблица для слов из строки
str word;--таблицв для всех фраз
str2 word;--таблица для всех повторяющихся фраз в строке
str3 word;--таблица для самых длинных повторяющихся фраз
17 июл 20, 18:28    [22169462]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Jack963
Member

Откуда:
Сообщений: 17
Просто мне нужно переделать задачу из PL/SQL в PL/pgSQL, а все ее решение основано на индексных таблицах
Jack963
Павел Лузанов,
Подскажите, пожалуйста, как тогда эта чать кода будет выглядеть в PL/pgsql:
DECLARE
--вводимая строка
type word is table of
varchar(200)
index by integer;
str_word word;--таблица для слов из строки
str word;--таблицв для всех фраз
str2 word;--таблица для всех повторяющихся фраз в строке
str3 word;--таблица для самых длинных повторяющихся фраз
17 июл 20, 18:32    [22169465]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Павел Лузанов
Member

Откуда:
Сообщений: 722
Jack963,

+/- так, а дальше в документацию по работе с массивами:
postgres=# do $$declare s varchar(200)[]; begin s := '{a}'; s := s || '{b}'; raise notice 'Cardinality: %, s[1]: %, s[2]: %', cardinality(s), s[1], s[2]; end;$$;
NOTICE:  Cardinality: 2, s[1]: a, s[2]: b
DO
17 июл 20, 18:40    [22169467]     Ответить | Цитировать Сообщить модератору
 Re: Документация PL/pgSQL  [new]
Павел Лузанов
Member

Откуда:
Сообщений: 722
Но это если у вас индекс всегда числовой.
Для ассоциативных массивов (index by varchar2) с массивами не получится.
Для них возможно стоит json использовать. На самый крайний случай - временные таблицы.

А вообще, переделка - повод для рефакторинга, может можно обойтись и без массивов, и без таблиц.
17 июл 20, 18:51    [22169470]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить