Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Привет! У меня вопрос по поводу самого грамотного способа извлечения ID (serial) последней вставленной в таблицу записи. Если запрашивать currval(table_id_seq), будет ли это корректно? Нужно выполнить: 1. вставку новой записи в таблицу Т1. 2. Потом извлечение IDшки вставившейся записи, 3. и дальшейшее ее использование. Допустим вышеперечисленные действия выолняются внутри одной транзакции. Если одновременно запускаются две трнзакции, добавляют по одной записи в T1. Так как каждая транзакция до своего закрытия не видит изменений, сделанных другой, то в обеих транзакциях currval возвратит одинаковые значения. Я наверное что-то не понимаю. Объясните, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 18:04 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
КвиточкаПривет! У меня вопрос по поводу самого грамотного способа извлечения ID (serial) последней вставленной в таблицу записи. Зависит от языка хранимой процедуры. Тебе по pl/pgsql или про С/С++ (я по другому не умею :-( ) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2004, 23:00 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Квиточка T1. Так как каждая транзакция до своего закрытия не видит изменений, сделанных другой, то в обеих транзакциях currval возвратит одинаковые значения. если б это было так для всех объектов базы, использование счетчиков было бы невозможным (убийственным) в сетевой работе (как правило - они еще и уникумы - т.е. суррогатные праймери кеи). По моим наблюдениям счетчики нарастают независимо от роллбаков или коммитов. И поэтому некствал возвращает некое наперед определенное значение только одной транзакции (если счетчик специально не переинициализировать). Т.е. счетчики тут (по отношению видимости изменений) отличаются от таблиц. Но каррвал вернет только последний некствал сделанный в текущей сессии. Будут ли у вас 2 одновременные транзакции в одной сессии (т.е. 2 нити/процесса, но в "одной сессии" - да и возможно ли такое в смысле "сессии" постгреса?), и что при этом случится (когад вы одновременно обратитесь за каррвалом) - не берусь ответить - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2004, 13:41 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
авторУ меня вопрос по поводу самого грамотного способа извлечения ID (serial) последней вставленной в таблицу записи. хранимая процедура тебя спасет Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 11:35 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
ZemA хранимая процедура тебя спасет ... [/src] хм. А это не велосипед с квадратными колесами? currval, судя по документации, вполне справляется с задачей (возврата последнего значения счетчика присвоенного в данной сессии). Если нет - желательно поподробнне, как можно нарыть баг с currval. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 15:38 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
Точно. currval справляется как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 16:57 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
до вызова nextval, явного или неявного, сurrval не работает . Подробнее читайте описание currval - возвращает последнее значение которое было в nextval ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2004, 22:25 |
|
||
|
Транзакции
|
|||
|---|---|---|---|
|
#18+
4321 ZemA хранимая процедура тебя спасет ... [/src] хм. А это не велосипед с квадратными колесами? currval, судя по документации, вполне справляется с задачей (возврата последнего значения счетчика присвоенного в данной сессии). Если нет - желательно поподробнне, как можно нарыть баг с currval. были какие-то проблеммы и я стал делать ч/з хп. сейчас же, потестировав конструкцию, Код: plaintext 1. хотя в принципе тип serial это на самом деле int8 NOT NULL DEFAULT nextval('sequence') , так что какая разница ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2004, 09:05 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=32824326&tid=2007546]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 364ms |

| 0 / 0 |
