MySQL開啟事務(wù)是指在執(zhí)行一系列SQL語句時,將它們視為一個整體,只要有一條失敗,整個事務(wù)都將回滾。事務(wù)中的語句必須全部成功才會提交,保證了數(shù)據(jù)的一致性和完整性。
START TRANSACTION;
SELECT * FROM users WHERE age >= 18 FOR UPDATE;
UPDATE users SET balance = balance - 100 WHERE id = 1;
UPDATE users SET balance = balance + 100 WHERE id = 2;
COMMIT;
以上代碼展示了MySQL開啟事務(wù)的一個示例。首先使用起始語句START TRANSACTION開啟事務(wù),然后查詢指定條件的用戶(這里使用了FOR UPDATE悲觀鎖),分別進(jìn)行轉(zhuǎn)賬操作,最后使用COMMIT語句提交事務(wù)。
如果兩個用戶的賬戶余額變化不是原子性的,可能會導(dǎo)致數(shù)據(jù)不一致,例如轉(zhuǎn)賬時用戶1減少了100元,但由于某些原因,用戶2沒有增加100元,那么整個事務(wù)會回滾,保證數(shù)據(jù)的一致性。
這種機(jī)制是很重要的,尤其是在多個用戶同時操作同一條數(shù)據(jù)的情況下。開啟事務(wù)可以保證操作的完整性和可靠性。