взаимное исключение в joomla

Я создал расширение для joomla, используя:

$id=$database->insertid();

Я только что упомянул, что если два пользователя вошли на сайт, они будут выполнять две записи в базе данных вместе, и тогда этот оператор вернет в обоих случаях одно и то же значение. в php вы можете решить эту проблему с транзакциями.

В joomla как решить эту проблему?


person iacoposk8    schedule 23.01.2013    source источник
comment
Вы имели ввиду авторизоваться или зарегистрироваться?   -  person Jobin    schedule 23.01.2013
comment
нет, я хочу брать последний вставленный id после вставки в базу, при этом обеспечив взаимоисключение   -  person iacoposk8    schedule 23.01.2013
comment
Если вы пытаетесь выполнить две вставки одновременно (два пользователя зарегистрированы одновременно). Joomla работает правильно, вы получите последний идентификатор пользователя с помощью функции вставки идентификатора.   -  person Jobin    schedule 23.01.2013


Ответы (3)


Если у вас есть таблица, с которой вы работаете, которая расширяет JTable, убедитесь, что вы включили функцию извлечения, которая необязательно является ее частью. Это должно означать добавление пары полей, подобных тому, что находится в таблице содержимого. Это предотвратит одновременное редактирование одной и той же строки двумя людьми, что создаст состояние гонки, в котором один из других потеряет свои данные.

person Elin    schedule 24.01.2013

Обратите внимание, что обе функции php и joomla для возврата последнего идентификатора вставки зависят от реализации mysql, а mysql возвращает последний вставленный идентификатор для текущего открытого соединения, поэтому параллелизм не является проблемой.

person Riccardo Zorn    schedule 24.01.2013

@ iacoposk8 Вы правы, возможно, это в очень заднем случае. В такое время попытайтесь добавить текущий идентификатор пользователя, вошедшего в систему, в свой запрос sql или где-либо еще, чтобы он не создавал никаких конфликтов. Надеюсь, вы поняли, что я хочу сказать. Спасибо

person atpatil11    schedule 24.01.2013