mysql forupdate鎖表和鎖行有何不同

小樊
93
2024-07-10 14:32:35
欄目: 云計(jì)算

在MySQL中,使用FOR UPDATE可以對(duì)查詢結(jié)果進(jìn)行行級(jí)鎖定,以防止其他會(huì)話修改或刪除這些行。FOR UPDATE可以在SELECT語(yǔ)句中使用,例如:

SELECT * FROM table_name FOR UPDATE;

這樣會(huì)對(duì)所有查詢結(jié)果行進(jìn)行行級(jí)鎖定,保證其他會(huì)話無(wú)法修改或刪除這些行。

另一方面,可以使用LOCK TABLES語(yǔ)句對(duì)整個(gè)表進(jìn)行鎖定,以防止其他會(huì)話對(duì)整個(gè)表進(jìn)行修改。例如:

LOCK TABLES table_name WRITE;

這會(huì)對(duì)整個(gè)表進(jìn)行鎖定,其他會(huì)話無(wú)法對(duì)該表進(jìn)行寫(xiě)操作,但可以進(jìn)行讀操作。

因此,FOR UPDATE是對(duì)查詢結(jié)果行進(jìn)行行級(jí)鎖定,而LOCK TABLES是對(duì)整個(gè)表進(jìn)行鎖定,兩者的鎖定粒度不同。

0