Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Есть таблица с данными, данные как обновляются так и добавляются. Как можно выбрать данные "порожденные" одной транзакцией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 16:05 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Можно по системному столбцу xmin. Правда, я не очень люблю привязываться к системным столбцам. Лучше сделать свой аналог, который не "сломается" при смене версий СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2007, 18:32 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Как сделать свой? Это же не просто уникальный ключ, а у никальный только для разных транзакций. Как сгенерить рандомное число, кторого в столбце на данный момент не существует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:19 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Алексей КлючниковКак сделать свой? Это же не просто уникальный ключ, а у никальный только для разных транзакций. Как сгенерить рандомное число, кторого в столбце на данный момент не существует?Использовать последовательность. (sequence) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:26 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
ага, sequence. Можно как то вставить ее в default значение поля, таким образом чтобы оно вставлялось при комитте. т.е. не контролировать установку этого ключа в самих ХП, а чтобы оно само автоматом ставилось при завершении транзакции на все модифицированные данные? Или это фантастика? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2007, 13:17 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Алексей Ключниковага, sequence. Можно как то вставить ее в default значение поля, таким образом чтобы оно вставлялось при комитте. т.е. не контролировать установку этого ключа в самих ХП, а чтобы оно само автоматом ставилось при завершении транзакции на все модифицированные данные? Или это фантастика? :)Посмотрите, как устроено поле типа serial. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2007, 15:43 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Исхитряться придется не слабо. некоторые функции могут использоваться и как начинающие транзакцию и как промежуточные. В принципе эта проблема тоже решается добавлением ключа в параметры функции а потом его проверка. И еще придется все время помнить какая функция в каком случае является начинающей транзакцию :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2007, 16:15 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Алексей КлючниковИсхитряться придется не слабо. некоторые функции могут использоваться и как начинающие транзакцию и как промежуточные. В принципе эта проблема тоже решается добавлением ключа в параметры функции а потом его проверка. И еще придется все время помнить какая функция в каком случае является начинающей транзакцию :(Напишите функцию, в ней вызывайте curval, ловите ошибку. если она есть (значит вы первый в транзакции), делайте nextval. Эту функцию повесьте в default ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2007, 16:46 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
currval дает последнее полученное значение последовательности в рамках сеанса, а не транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2007, 17:34 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Nick Gazaloffcurrval дает последнее полученное значение последовательности в рамках сеанса, а не транзакции.мдя, точно. Зарапортовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2007, 17:48 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
А что если "замутить" времянку со временем жизни данных - транзакция? Если пустая - то заполнить nextval()'ом, если полная - то взять оттуда число? По скольку dirty read в ПГ нету - все должно быть ОК. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 09:41 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Andrey DaeronА что если "замутить" времянку со временем жизни данных - транзакция? Если пустая - то заполнить nextval()'ом, если полная - то взять оттуда число? По скольку dirty read в ПГ нету - все должно быть ОК. можно чуть чуть по подроднее? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 18:36 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
т.е. темповую таблицу? наверное сработает.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 18:37 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Алексей Ключниковт.е. темповую таблицу? наверное сработает.. Угу. Именно временную таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 18:42 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
В пакете skytools есть модуль txid, а в нем функция get_current_txid() returns int8. То, что нужно. Воткнуть ее в DEFAULT поля типа int8, и вот вам поле с ID транзакции. Только учтите, что этот ID через некоторое время wraps around, так что индексировать и делать выборки только по одному txid бесполезно, результат будет неверным. http://pgfoundry.org/projects/skytools/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2007, 21:29 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Nick Gazaloffчерез некоторое время wraps around http://pgfoundry.org/projects/skytools/ интересно зачем и когда? ведь инт8 должно бы хватить на все жизнь.. зы спасибо за решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 15:06 |
|
||
|
Как пометить транзакцию
|
|||
|---|---|---|---|
|
#18+
Да, ошибся. Посмотрел внимательно README.txid. Внутренний txid в Postgres и правда wraps, а этот модуль генерит свой, гарантированно уникальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 23:12 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34844001&tid=2004974]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 381ms |

| 0 / 0 |
