
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.09.2013, 07:14:21
|
|||
|---|---|---|---|
Как лучше получить идентификатор |
|||
|
#18+
Добрый день уважаемые Гуру. Итак возникла такая необходимость получить идентификатор внутри транзакции. Но наступил на грабли (на свои грабли) Суть в следующем имеем таблицу InnoDB, с которой работаем в режиме ручного управления транзакциями. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Все бы было хорошо, но беда в том, что если по таблице myISAM делать UPDATE из транзакции, то она лочиться до тех пор, пока транзакция не завершиться. Я понимаю что можно завести новое подключение к базе и в нем получать идентификатор (ну это как крайний выход). Может кто нибудь подскажет как можно выйти из этой ситуации, одним подключением, без LOCK таблицы идентификаторов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.09.2013, 07:52:44
|
|||
|---|---|---|---|
Как лучше получить идентификатор |
|||
|
#18+
делаете таблицу сиквенс на иннодб (с одним полем - ид праймари автоинкремент) при вставке в него пустого значения ласт_инсерт_ид будет давать вам новый айдишник дополнительный плюс - несколько писателей друг с другом не столкнутся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.09.2013, 08:09:03
|
|||
|---|---|---|---|
Как лучше получить идентификатор |
|||
|
#18+
tanglir, писатель 1 Транзакция начата вставка в Siquence формата InnoDB в это время писатель 2 решил то же вставить в эту таблицу значение (получить идентификатор) он будет сидеть и ждать пока у первого не закончится транзакция ? Не? или я что то не догоняю? Т.е. результат ровно такой же что и с таблицей myISAM, второй писатель ждет окончания транзакции первого. Наверно выход только один, для получения идентификатора использовать второе соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.09.2013, 08:27:25
|
|||
|---|---|---|---|
Как лучше получить идентификатор |
|||
|
#18+
tanglirделаете таблицу сиквенс на иннодб (с одним полем - ид праймари автоинкремент) при вставке в него пустого значения ласт_инсерт_ид будет давать вам новый айдишник дополнительный плюс - несколько писателей друг с другом не столкнутся А точно заклинило меня на UPDATE, вставку ждать не будет и автоинкремент отработает правильно. Одна засада таблица Sequence будет расти. Придется периодически ее чистить. Спасибо действительно так и надо сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.09.2013, 08:31:56
|
|||
|---|---|---|---|
Как лучше получить идентификатор |
|||
|
#18+
tanglirделаете таблицу сиквенс на иннодб (с одним полем - ид праймари автоинкремент) при вставке в него пустого значения ласт_инсерт_ид будет давать вам новый айдишник дополнительный плюс - несколько писателей друг с другом не столкнутся А точно заклинило меня на UPDATE, вставку ждать не будет и автоинкремент отработает правильно. Одна засада таблица Sequence будет расти. Придется периодически ее чистить. Спасибо действительно так и надо сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1836110]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
426ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 177ms |
| total: | 685ms |

| 0 / 0 |
