在現代資料庫開發中,DataGrip 等工具透過提供圖形介面來提交、回溯或設定保存點,使事務處理變得更容易。
在本文中,我們將在SQL 中定義COMMIT、ROLLBACK 和SAVEPOINT 並示範如何在使用Oracle 、MySQL或Python 中的 PostgreSQL。
關鍵交易概念定義:完成事務,使所有變更永久保存在資料庫中。
•
用例:當事務中的所有操作都成功時使用COMMIT,確保資料庫反映變更。
定義:恢復交易期間所做的所有更改,將資料庫還原到先前的狀態。
•
用例:使用ROLLBACK 處理錯誤或撤消失敗的交易。
定義:在交易中設定命名檢查點,允許部分回滾到該點而不撤銷整個交易。
•
用例:使用SAVEPOINT 管理多個步驟的複雜事務,在需要時選擇性地回滾。
Python 中事務的常見步驟
import cx_Oracle # Connect to Oracle Database connection = cx_Oracle.connect("user/password@localhost/XEPDB1") cursor = connection.cursor()
try: # Start Transaction cursor.execute("UPDATE Accounts SET Balance = Balance - 100 WHERE Name = 'Alice'") cursor.execute("UPDATE Accounts SET Balance = Balance + 100 WHERE Name = 'Bob'") # Commit the transaction connection.commit() print("Transaction committed successfully!") except Exception as e: # Rollback in case of error connection.rollback() print(f"Transaction failed. Rolled back changes. Error: {e}")
try: # Start Transaction cursor.execute("UPDATE Accounts SET Balance = Balance - 200 WHERE Name = 'Alice'") connection.commit() # Savepoint cursor.execute("SAVEPOINT Savepoint_After_Alice") # Add 200 to Bob (intentional error to demonstrate rollback) cursor.execute("UPDATE Accounts SET Balance = Balance + 200 WHERE Name = 'Unknown'") # Commit if successful connection.commit() except Exception as e: # Rollback to savepoint cursor.execute("ROLLBACK TO Savepoint_After_Alice") connection.commit() print(f"Rolled back to savepoint. Error: {e}")概括
感謝您花時間與我一起探索與數據相關的見解。感謝您的參與。
?在 LinkedIn 上與我聯繫
以上是SQL 交易 - 使用 Python 提交、回溯和保存點的詳細內容。更多資訊請關注PHP中文網其他相關文章!