![]() |
|
Модераторы: skyboy |
![]()
|
|
| Alexzander |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 25.6.2005 Репутация: нет Всего: нет |
Проблема в следующем:
есть 2 таблицы: таблица каталога ссылок и таблица описаний каждой из ссылок.
вопрос в том, возможно ли одновременно (одним запросом) добавить новую запись в таблицу ссылок (links) и таблицу описаний (linkdescr). Вот последовательность действий, которая должна быть проделана: 1. занести новую запись в таблицу links, её автоматически присвоится id (MAX( link_id)+1) 2. в таблицу linkdescr занести новую запись, при этом поле link_id должно содержать id только что занесенной ссылки. проблема, конечно, может быть решена и поочередным выполнением insert, select и снова insert, но, возможно, есть более "красивый" способ? ЗЫ. сервер 4.0.26 |
|||
|
||||
| Ignat |
|
||||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
В один запрос не выйдет, два можно.
-------------------- Теперь при чем :P |
||||
|
|||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
Можешь транзакции использовать...
-------------------- ![]() |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 1 Всего: 51 |
Не "можешь"... а обязательно используй! или вручную проверяй, если первый запрос прошёл без ошибок, только тогда выполняй второй. |
|||
|
||||
| Alexzander |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 25.6.2005 Репутация: нет Всего: нет |
Такой вопрос... LAST_INSERT_ID() считается для конктетного соединения с базой или вообще? Я хочу сказать, что не может ли получиться так, что между первым и вторым запросом другая копия скрипта, выполнив первый запрос, изменит значение LAST_INSERT_ID() для первой копии?
|
|||
|
||||
| Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
Изменит. Чтобы это избежать - LOCK TABLE. -------------------- Теперь при чем :P |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Не изменит. Переменная LAST_INSERT_ID хранится на уровне соединения и на уровне соединиения обновляется после каждого запроса. Так что в пределах использования одного хендла соединения возвращается ПОСЛЕДНЕЕ значение автоинкремента, измененное при помощи УКАЗАННОГО хендла. То есть последнее изменение для твоего соединения, но не обязательно последнее для всей БД в целом. Это сообщение отредактировал(а) DENNN - 17.11.2005, 18:27 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |