Menerapkan dan Menggulung Balik Transaksi

Untuk menerapkan atau mengembalikan transaksi dalam mode penerapan manual, aplikasi memanggil SQLEndTran. Driver untuk DBMS yang mendukung transaksi biasanya menerapkan fungsi ini dengan menjalankan pernyataan COMMIT atau ROLLBACK . Manajer Driver tidak memanggil SQLEndTran ketika koneksi berada dalam mode penerapan otomatis; itu hanya mengembalikan SQL_SUCCESS, bahkan jika aplikasi mencoba untuk mengembalikan transaksi. Karena driver untuk DBMS yang tidak mendukung transaksi selalu dalam mode penerapan otomatis, mereka dapat menerapkan SQLEndTran untuk mengembalikan SQL_SUCCESS tanpa melakukan apa pun atau tidak menerapkannya sama sekali.

Catatan

Aplikasi tidak boleh menerapkan atau mengembalikan transaksi dengan menjalankan pernyataan COMMIT atau ROLLBACK dengan SQLExecute atau SQLExecDirect. Efek dari melakukan ini tidak ditentukan. Kemungkinan masalah termasuk driver tidak lagi mengetahui kapan transaksi aktif dan pernyataan ini gagal terhadap sumber data yang tidak mendukung transaksi. Aplikasi ini harus memanggil SQLEndTran sebagai gantinya.

Jika aplikasi meneruskan handel lingkungan ke SQLEndTran tetapi tidak melewati handel koneksi, Driver Manager secara konseptual memanggil SQLEndTran dengan handel lingkungan untuk setiap driver yang memiliki satu atau beberapa koneksi aktif di lingkungan. Driver kemudian melakukan transaksi pada setiap koneksi di lingkungan. Namun, penting untuk menyadari bahwa driver maupun Driver Manager tidak melakukan penerapan dua fase pada koneksi di lingkungan; ini hanyalah kenyamanan pemrograman untuk secara bersamaan memanggil SQLEndTran untuk semua koneksi di lingkungan.

(Penerapan dua fase umumnya digunakan untuk melakukan transaksi yang tersebar di beberapa sumber data. Pada fase pertamanya, sumber data dijajaki apakah sumber data dapat melakukan bagian transaksi mereka. Pada fase kedua, transaksi sebenarnya dilakukan pada semua sumber data. Jika ada sumber data yang membalas pada fase pertama bahwa sumber data tidak dapat melakukan transaksi, fase kedua tidak terjadi.)