2013-11-15 32 views
2

我讀了很多關於鎖定數據庫,表和行,但我想要更低的鎖,就像只鎖'操作'我不知道如何調用它,可以說我有功能在PHP:MySQL阻塞/鎖定操作

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

現在,我想只有一個人可以在同一時間使用此功能,以及其他需要等到第一個完成

但它是可以鎖定不表/行,但只這個函數,所以其他查詢與SELECT等可以執行沒有問題?或者更好的是鎖定桌子? (問題在於這個表非常重要,我不想鎖定它,因爲其他用戶可以訪問其他網站或其他網頁,如果很多人會排隊等待上面的代碼,其他訪問者也會有即使他們沒有上述代碼的站點中的興趣)

回答

2

是的。您可以使用GET_LOCKRELEASE_LOCK mysql函數

+0

但是很明顯,GET_LOCK只會阻止具有相同名稱的其他GET_LOCK查詢嗎? –

+1

當然。但是你想鎖定你的函數中發生的任何事情,而不是阻止任何特定的查詢,對:) –