
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.07.2015, 10:11
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
SELECT version(); PostgreSQL 9.4.1, compiled by Visual C++ build 1800, 64-bit все хранимки на языке plpgsql. Можно ли использовать транзакции в хранимках? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 10:18
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
crause, Нет. Любая функция исполняется в рамках транзакции вызывающего запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 10:24
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
vyegorov, подскажите как быть в моей ситуации. вся логика в бд, есть узкие места. хранимка 1. begin хранимка2(параметры) -- успешное выполнение insert to table -- c ошибкой -- тут необходимо при ошибке откатить изменения выполнение хранимки 2 end; что можете посоветовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:19
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
crauseчто можете посоветоватьполучить на клиенте ошибку и ... в общем-то дальше без разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:22
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
а как быть с откатом изменений. в хранимке 2 вставляются данные в другую таблицу откатить нужно эти изменения, в точности откатить счетчик primary key ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:26
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
crauseа как быть с откатом изменений. в хранимке 2 вставляются данные в другую таблицу откатить нужно эти изменения, в точности откатить счетчик primary key Счётчики(точнее сказать - последовательности) не откатываются! Их можно конечно принудительно установить на заданное значение, но ваши проблемы только обострятся если вы такую логику пропишете в приложение. https://ru.wikipedia.org/wiki/Суррогатный_ключ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:29
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
crause хранимка 1. begin хранимка2(параметры) -- успешное выполнение insert to table -- c ошибкой -- тут необходимо при ошибке откатить изменения выполнение хранимки 2 end; При таком сценарии откатиться транзакция вся, целиком — как вы и хотите. Если нужно избежать этого (т.е. в примере выше нужно, чтобы результат `хранимка2` остался), то оберните ваш INSERT (любой потенциально падающий блок) в BEGIN ... EXCEPTION WHEN ... END; блок. Также можно пользоваться SAVEPOINT-ами . Они просто помечают "точки" в транзакции, до которых нужно откатываться если получено исключение после SAVEPOINT-а. И тот, и другой вариант требуют больших накладных расходов, производительность станет хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:34
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
vyegorov, т.е. даже если я стартану транзакцию на стороне клиента BEGIn TRANSACTION или через SAVE POINT я не смогу вернуть primary key в состояние до ошибки без дополнительных телодвижений с ним? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:37
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
crause, ещё раз говорю, пользуйтесь суррогатными ключами и никогда их не меняйте. Проблем меньше будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:41
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
ОКТОГЕН, почитал я про сурогатный, но не могу понять как его в моей ситуации использовать на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:44
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
crauseя не смогучто изобретаешь, непрерывную бизнес-нумерацию? так блокируй всю таблицу, бери макс. и не связывай ее с рк, рано илм поздно нумерацию придетчя менять или иметь дубли или ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:45
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
crause, Сплошная нумерация вам тоже не нужна. http://www.audit-it.ru/news/account/657215.html В законодательстве нет требований её соблюдать, а затраты на её реализацию и overhead по производительности перекроют все мнимые преимущества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 11:47
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
p2.crauseя не смогучто изобретаешь, непрерывную бизнес-нумерацию? так блокируй всю таблицу, бери макс. и не связывай ее с рк, рано илм поздно нумерацию придетчя менять или иметь дубли или ... Эта нумерация прямо для сборника "классика ошибок проектирования информационных систем". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 12:59
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
ОКТОГЕНp2.пропущено... что изобретаешь, непрерывную бизнес-нумерацию? так блокируй всю таблицу, бери макс. и не связывай ее с рк, рано илм поздно нумерацию придетчя менять или иметь дубли или ... Эта нумерация прямо для сборника "классика ошибок проектирования информационных систем". У меня в биллинге (я в телекоме работаю международном) только некоторые страны страстно желают, чтобы нумерация счетов была непрерывной. Ох и муторное это дело! Но это одно поле, которое не входит в ключи. Когда мне нужно было реализовать что-то подобное (на фрилансе) — непрерывная нумерация в рамках группы, я поступил так: pg_advisory_lock(GROUP, _grp_id), где `GROUP` — просто номер, в виде макроса SELECT coalesce(max(seq_num), 0)+1 INTO _seq FROM tab WHERE group_id=_grp_id INSERT INTO tab (group_id, seq_num, ...) VALUES (_grp_id, _seq, ...); pg_advisory_unlock(GROUP, _grp_id) В целом, я бы пересмотрел вашу модель данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2015, 13:21
|
|||
|---|---|---|---|
непонятны хранимки и транзакции в них. |
|||
|
#18+
vyegorov, догадываюсь, сам с таким сталкивался. "Штоп без дырок!" А если документ помечается удалённым, то , конечно же - сдвигаем нумерацию остальных, и перепрописываем все ссылки во всех документах(и изменившиеся тоже). И молимся, чтобы всё сработало. В тех странах, наверное, законы кривые, в России, к счастью хоть этого маразма, но всё-таки нет. И это хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&tablet=1&tid=1997875]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
164ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 475ms |

| 0 / 0 |
