Dalam pembangunan pangkalan data moden, alatan seperti DataGrip menjadikan pengendalian transaksi lebih mudah dengan menyediakan antara muka grafik untuk melakukan, memutar balik atau menetapkan titik simpanan.
Dalam artikel ini, kami akan mentakrifkan COMMIT, ROLLBACK dan SAVEPOINT dalam SQL dan menunjukkan cara melaksanakan kawalan transaksi ini apabila bekerja dengan Oracle, MySQL, atau PostgreSQL dalam Python.
• Definisi: Memuktamadkan transaksi, menjadikan semua perubahan kekal dalam pangkalan data.
• Kes Penggunaan: Gunakan COMMIT apabila semua operasi dalam transaksi berjaya, memastikan pangkalan data mencerminkan perubahan.
• Definisi: Mengembalikan semua perubahan yang dibuat semasa transaksi, memulihkan pangkalan data kepada keadaan sebelumnya.
• Kes Penggunaan: Gunakan ROLLBACK untuk mengendalikan ralat atau buat asal transaksi yang gagal.
• Definisi: Menetapkan pusat pemeriksaan bernama dalam urus niaga, membenarkan pemulangan separa ke titik itu tanpa membuat asal keseluruhan transaksi.
• Kes Penggunaan: Gunakan SAVEPOINT untuk mengurus urus niaga yang kompleks dengan berbilang langkah, berguling semula secara terpilih apabila diperlukan.
Apabila bekerja dengan pangkalan data secara pengaturcaraan, perpustakaan pangkalan data Python (cth., cx_Oracle, mysql-connector-python, psycopg2) menyediakan kaedah untuk mengawal transaksi secara eksplisit.
Langkah Biasa untuk Transaksi dalam 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}")
Menguasai konsep ini membolehkan anda mengurus transaksi pangkalan data dengan cekap dalam aplikasi dunia sebenar!
Terima kasih kerana meluangkan masa untuk meneroka cerapan berkaitan data dengan saya. Saya menghargai pertunangan anda.
? Berhubung dengan saya di LinkedIn
Atas ialah kandungan terperinci Transaksi SQL - COMMIT, ROLLBACK dan Savepoints dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!