SQLite nested transaction
遇到 SQLite 需要 nested transaction 的情況,查了一下,似乎沒辦法直接用 TRANSACTION
做。後來是看到另外一個語法 SAVEPOINT
可以解決這樣的問題,而且一般的 SQL DB 好像也都支援。以下是相關的用法:
SAVEPOINT savepoint_name
RELEASE savepoint_name
ROLLBACK TO SAVEPOINT savepoint_name
savepoint_name
就取自己要的名稱,需要做 nested 的情況下就用不同的 savepoint_name
,也可以外層用 SAVEPOINT
,內層用 TRANSACTION
;但是不能外層是 TRANSACTION
,內層用 SAVEPOINT
這樣。
參考資料: