2013-11-15 4 views
2

Я много читал о блокировке баз данных, таблиц и строк, но мне нужна более низкая блокировка, как блокировка только «операция», я не знаю, как ее называть, скажем, у меня есть функция в php:MySQL Операция блокировки/блокировки

function update_table() 
{ 
    //querys like SELECT, UPDATE INSERT etc. 
} 

Теперь я хочу только один человек может использовать эту функцию в то же время, и другие должны ждать, пока первый закончить

но можно зафиксировать не таблицы/строки, но только эта функция, так что другие запросы с SELECT и т. д. могут быть выполнены без проблем? или, может быть, лучше всего заблокировать стол? (проблема в том, что эта таблица очень важна, и я не хочу ее блокировать, потому что некоторые другие пользователи могут посещать сайт для других ресонов/других страниц, и если многие люди будут ждать в очереди за этим кодом выше, другие посетители также будут иметь чтобы они не интересовались сайтом с кодом выше)

ответ

2

Да. Вы можете использовать GET_LOCK и RELEASE_LOCK Функции mysql

+0

Но если быть ясным, GET_LOCK блокирует только другие запросы GET_LOCK с тем же именем? –

+1

Несомненно. Но вы хотите заблокировать все, что происходит в вашей функции, а не блокировать какой-либо конкретный запрос, правильно :) –

Смежные вопросы