LOCK TABLES, UNLOCK TABLES, thread

Name

Новичок
LOCK TABLES, UNLOCK TABLES, thread

Пытаюсь проверить поведение LOCK TABLES, UNLOCK TABLES

Если на windows (localhost) открыть два окна (IE)
это будет один и тот же thread?

Я так понимаю что в LOCK TABLES по любому будет UNLOCK
когда скрипт завершился.
Хоть вызывай mysql_close хоть не вызывай.
 

Demiurg

Guest
>это будет один и тот же thread?
нет [f]na_tanke[/f]

зачем тебе lock ?
 

Name

Новичок
Что то я тут начал рассуждать.

Допустим есть некий набор записей.
user_1 просматривает и потом открывает одну запись для редактирования.
В форме есть например категории (select с выбраными значениями)
Пока user_1 вводит данные,
user_2 удалил или отредактировал эту категорию (которую выбрал user_1)

Что в итоге? Бардак.
Что делать?
 

ForJest

- свежая кровь
Name
У тебя thread этот перестаёт существовать после того, как PHP закончит работать. Все файлы, ресурсы освобождаются/закрываются автоматически.
[m]mysql_close[/m]

с удалением - это тебе нужно решить, что делать.
с обновлением - хорошо описано в мане по муське.
1.9.4.3 Транзакции и атомарные операции

Для обновления записей в рамках одиночной операции можно также использовать функции. Применяя приведенные ниже технические приемы, вы получите очень эффективное приложение:
Поля модифицируются относительно их текущей величины.
Обновляются только те поля, которые действительно изменились.
Например, при выполнении обновлений информации некоторого заказчика мы обновляем только те данные этого заказчика, которые изменялись, и делаем проверку только на предмет того, модифицировались ли изменяемые данные или зависящие от них по сравнению с исходной строкой. Проверка на то, изменялись или нет данные, выполняется с помощью выражения WHERE в команде UPDATE. Если данную запись обновить не удалось, то клиент получает сообщение: "Некоторые данные, которые вы изменяли, были модифицированы другим пользователем". После этого в окне выводится старая версия, чтобы пользователь мог решить, какую версию записи заказчика он должен использовать. Такой алгоритм обеспечивает нечто похожее на блокирование столбцов, но реально он даже лучше, поскольку мы обновляем только часть столбцов, используя величины, соответствующие их текущим значениям. Это означает, что типичные команды UPDATE выглядят примерно как приведенные ниже:
[sql]
UPDATE tablename SET pay_back=pay_back+'relative change';
UPDATE customer
SET
customer_date='current_date',
address='new address',
phone='new phone',
money_he_owes_us=money_he_owes_us+'new_money'
WHERE
customer_id=id AND address='old address' AND phone='old phone';
[/sql]
Как можно видеть, этот способ очень эффективно и работает, даже если другой клиент изменит величины в столбцах pay_back или money_he_owes_us.
 
Сверху