Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как узнать что транзакция уже запущена...?
|
|||
|---|---|---|---|
|
#18+
Господа, может кто подскажет.... Есть классы, которые запускаются друг из друга и каждый должен стартовать транзакцию либо делать SavePoint, последовательность вызова классов не определенная, поэтому надо узнать запущена транзакция или нет, т.к. повторный вызов BEGIN выдает предупреждение, а самое главное непонятно сколько COMMITов делать когда классы заканчивают работу.... В MSSql это можно делать как @@TRANSCOUNT? Из функций для работы с транакциями я нашел txid_current(), которая возвращает идентификатор транзакции, но когда она запущена не понятно (идентификатор есть если транзакция и не запущена)... Можно выяснить что транзакция запущено только коссвенно... если два раза подряд вызвать txid_current(), то идентификатор транзакции не изменится и функция вернет одно и тоже значение :)) прикольно в общем... А если транзакция не была запущена, то каждый вызов SELECT txid_current() выдает новый ид транзакции.... Может кто решал эту задачу? Версия PG 8.3b4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2008, 18:17 |
|
||
|
Как узнать что транзакция уже запущена...?
|
|||
|---|---|---|---|
|
#18+
SeniorAndreпоэтому надо узнать запущена транзакция или нет, т.к. повторный вызов BEGIN выдает предупреждение, а самое главное непонятно сколько COMMITов делать когда классы заканчивают работу.... В PG нет вложенных транзакций. Одного commit хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2008, 19:12 |
|
||
|
Как узнать что транзакция уже запущена...?
|
|||
|---|---|---|---|
|
#18+
Если у Вас все так красиво с классами, то реализуйте класс, отвечающий за базу. Пусть в нем будут методы старта транзакции, коммита и роллбэка. И вопросы отпадут сами собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2008, 20:43 |
|
||
|
Как узнать что транзакция уже запущена...?
|
|||
|---|---|---|---|
|
#18+
:) У меня как раз и был класс отвечающий за работу с БД, но он про транзакции спрашивал у БД :)). Наверное действительно просто буду подсчитывать транзакции внутри класса..., спасибо... совсем шоры на глазах...., я просто БД перевожу с MSSql а постргрю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2008, 00:12 |
|
||
|
Как узнать что транзакция уже запущена...?
|
|||
|---|---|---|---|
|
#18+
SeniorAndreНаверное действительно просто буду подсчитывать транзакции внутри класса...,Как Вам уже написали, подсчитывать будет нечего. В PG нет вложенных транзакций. Она либо стартована, либо завершена и надо стартовать новую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2008, 15:17 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=279&tid=2004745]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 386ms |

| 0 / 0 |
