在MySQL中,默認使用的是自動提交事務的方式。如果需要鎖定一行或多行數據,可以開啟行鎖或表鎖。
首先是開啟行鎖,只需要在SQL語句中加上FOR UPDATE即可:
SELECT * FROM 表名 WHERE 列名=值 FOR UPDATE;
這樣就會鎖定查詢出來的行,其他事務就無法對這些行進行修改。如果需要取消鎖定,可以用COMMIT或ROLLBACK語句來提交或回滾事務。
接下來是開啟表鎖,需要修改MySQL的參數來實現:
SET GLOBAL innodb_table_locks=1;
innodb_table_locks參數的默認值為1,表示開啟表鎖。如果需要關閉表鎖,可以將其值設置為0。
同時,如果開啟了表鎖,在執行查詢、插入、更新等操作時,在表級別上會自動加上X鎖或S鎖,當事務提交或回滾后,鎖也會被釋放。