Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Commit, транзакции. / 5 сообщений из 5, страница 1 из 1
09.07.2020, 14:41
    #39977786
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Commit, транзакции.
Я работаю в DEBIAN+pgadmin4. Все нормально.
Человек работает на win 7 и там программа pgadmin4 не ставится (не работает).
Но можно установить DBeaver, но у ней засада, она не видит процедуры (которые вызываются через CALL).

Вопрос в следующем, как внутри ОБЫЧНОЙ функции сделать COMMIT?

К примеру есть функция (её то DBeaver видит без проблем / код функции), и внутри функции нужно сделать сохранение на определенных этапах.
К примеру, если создать таблицу, её наполнить и функция откатается нормально (без сбоев), то таблица создастся и я увижу в ней данные (которые в этой функции мы добавили в эту таблицу).
А вот если на середине функции принудительно задать EXIT; то таблица не создаётся.
Пытался внутрь функции(№1) вставить другую функцию (№2)- и уже в функции №2 создавать таблицу - не срабатывает.

Повторюсь, вызвать CALL мы не можем.
К примеру:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Begin
CREATE UNLOGGED TABLE IF NOT EXISTS таблица_х (
	дата_время timestamp);

BEGIN
	SELECT анализ_данных.test_02() into п_запрос1;
    -- или  PERFORM анализ_данных.test_02();
-- анализ_данных.test_02() внутри неё создается та же таблица что и в основном коде
	END;
exit;

End;



В результате ноль!! (таблица не создается).
По книжкам, должно получаться.
.
...
Рейтинг: 0 / 0
09.07.2020, 15:01
    #39977789
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Commit, транзакции.
О-О-О
Вопрос в следующем, как внутри ОБЫЧНОЙ функции сделать COMMIT?

Никак.
Функция только внутри транзакции.
...
Рейтинг: 0 / 0
09.07.2020, 16:43
    #39977826
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Commit, транзакции.
Melkij,


То есть если мне нужно закольцевать функцию до 23-00, то пока 23-00 не наступит, данных созданных этой самой функцией я не увижу?
Хоть как то можно сохранить промежуточные результаты в БД?
...
Рейтинг: 0 / 0
09.07.2020, 16:52
    #39977829
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Commit, транзакции.
AFAIK Клиентов под Windows дофига

О-О-О

Человек работает на win 7 и там программа pgadmin4 не ставится (не работает).

Поставте предыдущую версию.

О-О-О

Но можно установить DBeaver, но у ней засада, она не видит процедуры (которые вызываются через CALL).

Спросить на форуме DBeaver.
Вроде по форуму, команда CALL поддерживается (как минимум у нее есть баги, т.ч. команда как таковая есть). C DBeaver я не работал.
...
Рейтинг: 0 / 0
09.07.2020, 17:16
    #39977837
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Commit, транзакции.
Leonid Kudryavtsev,

Просьба не бить за картинку.
Нашел, просто процедуру запихнули в функции.
Кстати в DBeaver отдельно выделены Агрегатные функции (чего в pgadmin4 нет).
.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Commit, транзакции. / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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