MySQL 事務(wù)是一組 SQL 語(yǔ)句,它們一起執(zhí)行并被視為單個(gè)操作。如果事務(wù)中的任何一條語(yǔ)句失敗,整個(gè)事務(wù)都會(huì)被回滾到最初狀態(tài)。
在事務(wù)中,可以使用BEGIN TRANSACTION
、COMMIT
和ROLLBACK
語(yǔ)句來(lái)控制事務(wù)的邊界,例如:
BEGIN TRANSACTION; UPDATE table1 SET value1 = 1 WHERE id = 1; UPDATE table2 SET value2 = 2 WHERE id = 2; COMMIT;
如果其中任何一個(gè)UPDATE
語(yǔ)句失敗,該事務(wù)將回滾到開始時(shí)的狀態(tài),并且兩個(gè)表格的數(shù)據(jù)不會(huì)更改。
關(guān)于 MySQL 中的null
值,它表示無(wú)效值或未知值。在事務(wù)中,如果null
值賦給了一個(gè)列,它將占據(jù)該列并為行添加一個(gè)新條目。
BEGIN TRANSACTION; INSERT INTO table1 (col1, col2) VALUES (1, null); COMMIT;
在以上事務(wù)中,列col2
將為空。如果在同一行中列col2
已經(jīng)有一個(gè)值,將覆蓋它并且該值將不再可用。