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

start [/forum/topic.php?fid=47&msg=38387370&tid=1836110]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
86ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 417ms |

| 0 / 0 |
