Вопросы с тегом «plpgsql»

PL / pgSQL является процедурным языком по умолчанию для системы баз данных PostgreSQL. Вопросы о PL / pgSQL, вероятно, также должны быть помечены как «PostgreSQL».

60
Создать индекс, если он не существует

Я работаю над функцией, которая позволяет мне добавить индекс, если он не существует. Я столкнулся с проблемой, что я не могу получить список индексов для сравнения. есть идеи? Эта проблема аналогична проблеме создания столбца, которая решается с помощью следующего кода:...

46
Производительность функции

Исходя из опыта MySQL, где производительность хранимых процедур (старая статья) и удобство использования сомнительны, я оцениваю PostgreSQL для нового продукта для моей компании. Одна из вещей, которые я хотел бы сделать, - это перенести некоторую логику приложения в хранимые процедуры, поэтому я...

40
Идиоматичный способ реализации UPSERT в PostgreSQL

Я читал о различных UPSERTреализациях в PostgreSQL, но все эти решения относительно старые или относительно экзотические (например, с использованием записываемого CTE ). И я просто не являюсь экспертом в psql, чтобы сразу выяснить, устарели ли эти решения, потому что они хорошо рекомендованы, или...

38
Как вставить (файл) данные в Bytea столбец PostgreSQL?

Этот вопрос не о байтее v. Oid v. Blobs v. Крупных объектах и ​​т. Д. У меня есть таблица, содержащая integerполе первичного ключа и byteaполе. Я хотел бы ввести данные в byteaполе. Предположительно, это может быть сделано одним из PL/языков, и я могу рассмотреть возможность сделать это PL/Pythonв...

36
Каковы различия между «хранимыми процедурами» и «хранимыми функциями»?

Поэтому в комментарии к этому вопросу упоминается, что существует небольшая разница в «хранимых процедурах» и «хранимых функциях» в PostgreSQL. Комментарий ссылается на статью в Википедии, но некоторые из них, кажется, не применяются (например, они могут быть использованы в SELECTутверждении). Сам...

28
Функция Postgres назначает результаты запроса нескольким переменным

Мне нужно присвоить значения переменной 2, как показано ниже в функции Postgres. a := select col1 from tbl where ... b := select col2 from tbl where ... Как я могу назначить 2 значения для 2 переменных в одной строке команды? подобно a,b := select col1,col2 from tbl where...

22
Есть ли хороший способ запустить триггер для каждой записи в таблице postgres?

У меня есть система, в которой я не могу управлять дизайном некоторых таблиц (реплицируется через Slony-I), и поэтому у меня есть ряд того, что мы называем «теневыми таблицами», где я извлекаю некоторую информацию из реплицируемых таблиц и сохраните его в обработанной форме, в которой я нуждаюсь,...

20
Процедурные языки PostgreSQL - различия между PL / pgSQL и SQL

Кто-нибудь может, пожалуйста, суммировать различия между: http://www.postgresql.org/docs/9.1/static/xfunc-sql.html и http://www.postgresql.org/docs/9.1/static/plpgsql.html ? Основные положения: концептуальные различия учитывая проблемную семью, удобство использования политические вопросы...

19
План запросов Postgres для вызова функции, написанный на plpgsql

Это возможно при использовании pgadminили plsqlухватить план запроса для SQL выполненного оператора Внутри у сер д efined е соборования (UDF) , используя EXPLAIN. Итак, как мне получить план запроса для конкретного вызова UDF? Я вижу, что UDF абстрагируется в одну операцию F()в pgadmin. Я...

18
Триггер: переместить удаленные строки в таблицу архива

У меня есть маленькая (~ 10 строк) таблица, вызываемая restrictionsв моей базе данных PostgreSQL, где значения удаляются и вставляются ежедневно. Я хотел бы иметь таблицу с именем restrictions_deleted, где каждая строка, которая удаляется изrestrictions будет сохранена автоматически. Так как...

18
EXPLAIN ANALYZE не показывает детали для запросов внутри функции plpgsql

Я использую функцию PL / pgSQL в PostgreSQL 9.3 с несколькими сложными запросами внутри: create function f1() returns integer as $$ declare event tablename%ROWTYPE; .... .... begin FOR event IN SELECT * FROM tablename WHERE condition LOOP EXECUTE 'SELECT f2(event.columnname)' INTO dummy_return; END...

17
Конфликт имен между параметром функции и результатом JOIN с предложением USING

Учитывая эту настройку в текущем Postgres 9.4 ( из этого связанного вопроса ): CREATE TABLE foo (ts, foo) AS VALUES (1, 'A') -- int, text , (7, 'B'); CREATE TABLE bar (ts, bar) AS VALUES (3, 'C') , (5, 'D') , (9, 'E'); Существует также SQL Fiddle из предыдущего вопроса. Я написал SELECTс, FULL...

16
Есть ли простой способ в PL / pgSQL, чтобы проверить, если запрос не дал результата?

В настоящее время я немного экспериментирую с PL / pgSQL и хочу узнать, есть ли более элегантный способ сделать что-то вроде этого: select c.data into data from doc c where c.doc_id = id and c.group_cur > group_cur order by c.id desc limit 1; EXCEPTION WHEN NO_DATA_FOUND THEN select c.data into...

14
Как я могу вернуть несколько строк записей в PL / pgSQL

Я пытаюсь вернуть несколько записей, используя тип данных RECORD, есть ли способ, которым я могу добавить к RECORD и добавить / добавить новое значение с каждой итерации к этой записи. то есть, я хочу добавить к нему, recчтобы он recстал набором строк после завершения цикла, который я могу просто...

13
Что произойдет, если два процесса попытаются ОБНОВИТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД одновременно?

Согласно документам: В то же время Обновите материализованное представление, не блокируя параллельные выборки в материализованном представлении. (...) ... ДРУГОЕ СОДЕРЖАНИЕ ... Даже с этой опцией только один REFRESH одновременно может работать с любым материализованным представлением . У меня была...

13
Создать исключение с контекстом

Когда PostgreSQL генерирует исключение, появляется строка «КОНТЕКСТ», например: ERROR: INSERT has more target COLUMNS than expressions LINE 3: ... ^ QUERY: INSERT INTO ... CONTEXT: PL/pgSQL FUNCTION "XXXXX" line 4 at SQL statement Но когда я выбрасываю исключение, этой строки там нет. Я не нашел,...

12
Затраты на процедурные языки в PostgreSQL (plpython / plsql / pllua…)

Я пытаюсь найти информацию о пользовательских функциях PostgreSQL в производительности процедурных языков для задач реального времени. Как они сравниваются со встроенными функциями? Есть ли какая-либо разница (в накладных расходах), как Postgres вызывает / управляет функциями plpython и plpgsql...

11
Как получить контекст исключения для вручную вызванного исключения в PL / pgSQL?

В Postgres мы получаем «трассировку стека» исключений, используя этот код: EXCEPTION WHEN others THEN GET STACKED DIAGNOSTICS v_error_stack = PG_EXCEPTION_CONTEXT; Это прекрасно работает для «естественных» исключений, но если мы возбуждаем исключение, используя RAISE EXCEPTION 'This is an error!';...

11
Ошибка: функция set_valued, вызываемая в контексте, которая не может принять набор. О чем это?

Я использую Postgresql 9.1, с Ubuntu 12.04. Вдохновленный ответ Крейга на мой вопрос Конкатенацию setof типа или setof записи , я думал , я бы хорошо с использованием return query, setof recordи генератор серии в этой функцию plpgsql: create or replace function compute_all_pair_by_craig(id_obj...