SAVEPOINT和ROLLBACKTOSAVEPOINT語法

字號:

SAVEPOINT和ROLLBACK TO SAVEPOINT語法:
    SAVEPOINT identifier
    ROLLBACK [WORK] TO SAVEPOINT identifier
    RELEASE SAVEPOINT identifier
    InnoDB支持SQL語句SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT和自選的用于ROLLBACK的WORK關(guān)鍵詞。
    SAVEPOINT語句用于設(shè)置一個(gè)事務(wù)保存點(diǎn),帶一個(gè)標(biāo)識符名稱。如果當(dāng)前事務(wù)有一個(gè)同樣名稱的保存點(diǎn),則舊的保存點(diǎn)被刪除,新的保存點(diǎn)被設(shè)置。
    ROLLBACK TO SAVEPOINT語句會(huì)向以命名的保存點(diǎn)回滾一個(gè)事務(wù)。如果在保存點(diǎn)被設(shè)置后,當(dāng)前事務(wù)對行進(jìn)行了更改,則這些更改會(huì)在 回滾中被撤銷。但是,InnoDB不會(huì)釋放被存儲(chǔ)在保存點(diǎn)之后的存儲(chǔ)器中的行鎖定。(注意,對于新插入的行,鎖定信息被存儲(chǔ)在行中的事務(wù)ID承載;鎖定沒有被分開存儲(chǔ)在存儲(chǔ)器中。在這種情況下,行鎖定在撤銷中被釋放。)在被命名的保存點(diǎn)之后設(shè)置的保存點(diǎn)被刪除。
    如果語句返回以下錯(cuò)誤,則意味著不存在帶有指定名稱的保存點(diǎn):
    ERROR 1181: Got error 153 during ROLLBACK
    RELEASE SAVEPOINT語句會(huì)從當(dāng)前事務(wù)的一組保存點(diǎn)中刪除已命名的保存點(diǎn)。不出現(xiàn)提交或 回滾。如果保存點(diǎn)不存在,會(huì)出現(xiàn)錯(cuò)誤。
    如果您執(zhí)行COMMIT或執(zhí)行不能命名保存點(diǎn)的ROLLBACK,則當(dāng)前事務(wù)的所有保存點(diǎn)被刪除。