Interaksi PL/SQL dengan Oracle
6.9.3. Mengontrol Autonomous Transactions
Perintah SQL pertama di dalam sebuah autonomous routine memulai sebuah transaksi.. Ketika satu transaksi berakhir, perintah SQL berikutnya memulai transaksi yang lain. Seluruh perintah-perintah SQL yang dieksekusi sejak commit atau rollback terakhir membentuk transaksi terkini. Untuk mengontrol autonomous transactions, kita menggunakan perintah-perintah berikut ini, yang diterapkan hanya kepada transaksi terkini (aktif):
- COMMIT
- ROLLBACK [TO savepoint_name]
- SAVEPOINT savepoint_name
- SET TRANSACTION
COMMIT mengakhiri transaksi terkini dan membuat perubahan-perubahan yang terjadi selama transaksi tersebut menjadi permanen. ROLLBACK mengakhiri transaksi terkini dan membatalkan perubahan-perubahan yang terjadi. ROLLBACK TO membatalkan suatu bagian dari transaksi. SAVEPOINT menamai dan menandai titik terkini dari dalam sebuah transaksi. SET TRANSACTION mengeset properti-properti transaksi seperti akses read/write (baca/tulis) dan level isolasi.
Catatan: Properti-properti transaksi yang diset di dalam main transaction (transaksi utama) diterapkan hanya kepada transaksi tersebut, tidak kepada autonomous transactions-nya, dan begitu pula sebaliknya.
6.9.3.1. Masuk dan Keluar
Ketika kita memasuki bagian executable dari sebuan autonomous routine, main transaction ditunda (suspend). Ketika kita keluar dari routine tersebut, main transaction dimulai kembali.
Untuk keluar secara normal, kita harus secara eksplisit melakukan commit atau rollback seluruh autonomous transactions. Jika routine tersebut (atau suatu routine yang dipanggil olehnya) memiliki transaksi-transaksi yang dihentikan sementara (pending), exception dimunculkan, dan seluruh transaksi-transaksi yang pending tersebut akan di rollback.
6.9.3.2. Melakukan Commit dan Roll Back
COMMIT dan ROLLBACK mengakhiri autonomous transaction yang sedang aktif namun tidak keluar dari autonomous routine. Seperti ditunjukkan oleh Gambar 6-4, ketika satu transaksi berakhir, perintah SQL berikutnya mengawali transaksi yang lain.

Gambar 6-4 Multiple Autonomous Transactions
6.9.3.3. Menggunakan Savepoint
Jangkauan dari savepoint adalah transaksi dimana ia didefinisikan. Savepoint-savepoint yang didefinisikan di dalam main transaction tidak terelasi dengan savepoint-savepoint yang didefinisikan di dalam autonomous transactions-nya. Pada kenyataannya, main transaction dan sebuah autonomous transaction dapat menggunakan nama-nama savepoint yang sama.
Kita dapat melakukan rollback hanya kepada savepoint-savepoint yang ditandai di dalam transaksi terkini. Sehingga, ketika di dalam sebuah autonomous transaction, kita tidak dapat melakukan rollback ke savepoint yang ditandai di dalam main transaction, Untuk melakukannya, kita harus memulai kembali main transaction tersebut dengan cara keluar dari autonomous routine.
Ketika di dalam main transaction, melakukan rollback ke savepoint yang ditandai sebelum kita memulai sebuah autonomous transaction tidak me-rollback autonomous transaction tersebut.
Perlu kita ingat, autonomous transactions independen secara penuh dari main transaction.
6.9.3.4. Menghindari Errors
Untuk menghindari error-error yang sering terjadi, perlu diperhatikan poin-poin berikut ketika mendesain autonomous transactions:
- Jika sebuah autonomous transaction berusaha mengakses sebuah sumberdaya yang dipegang oleh main transaction (yang tidak dapat dimulai kembali sampai autonomous routine keluar), deadlock dapat terjadi. Dalam kasus tersebut, Oracle memunculkan exception di dalam autonomous transaction tersebut, yang mana akan di-rollback jika exception tidak dapat ditangani (unhandled).
- Initialization parameter TRANSACTION menentukan jumlah maksimum transaksi-transaksi yang dapat berjalan secara bersamaan. Jumlah tersebut bisa saja terlampaui jika autonomous transactions (yang berjalan secara bersamaan dengan main transaction) tidak diambil ke dalam akun.
- Jika kita berusaha keluar dari autonomous transaction tanpa melakukan commit atau rollback, Oracle memunculkan sebuah exception. Jika exception menjadi tidak tertangani (unhandled), transaksi akan di-rollback.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Buku ini membahas berbagai macam tip dan trik yang sangat berguna bagi Anda pembaca pengguna database Oracle. Pemula, mahasiswa, programmer, maupun database administrator yang mengharapkan solusi cepat dalam menangani permasalahan-permasalahan dalam penggunaan database Oracle dapat membaca buku ini. Anda tidak harus membaca buku ini secara urut karena buku ini di susun berdasarkan topik permasalahan, dan Anda dapat membaca topik-topik yang sesuai dengan permasalahan yang Anda hadapi. Dapat di beli di toko buku Gramedia, Gunung Agung, Uranus, Karisma, Uranus dsb. |


































