Sebuah transaksi adalah sekelompok berurutan operasi manipulasi database, yang dilakukan seolah-olah satu unit karya tunggal. Dengan kata lain, transaksi tidak akan lengkap kecuali setiap operasi individu dalam kelompok berhasil. Jika ada operasi dalam transaksi gagal, seluruh transaksi akan gagal.
Praktis Anda akan banyak klub SQL query ke dalam kelompok dan Anda akan mengeksekusi semua dari mereka bersama-sama sebagai bagian dari transaksi.
Sifat Transaksi:
Transaksi memiliki empat sifat berikut standar, biasanya disebut dengan akronim ACID:
- Atomicity: memastikan bahwa semua operasi dalam unit kerja selesai dengan sukses, jika tidak, transaksi tersebut dibatalkan pada titik kegagalan, dan operasi sebelumnya digulung kembali ke keadaan semula.
- Konsistensi: memastikan bahwa database dengan benar perubahan negara atas transaksi yang berhasil dilakukan.
- Isolasi: memungkinkan transaksi untuk beroperasi secara independen dan transparan dari satu sama lain.
- Durabilitas: memastikan bahwa hasil atau efek dari transaksi yang dilakukan tetap dalam kasus kegagalan sistem.
Dalam MySQL, transaksi dimulai dengan pernyataan BEGIN WORK dan diakhiri dengan baik COMMIT atau ROLLBACK pernyataan. Perintah SQL antara awal dan akhir pernyataan membentuk sebagian besar transaksi.
COMMIT dan ROLLBACK:
Kedua kata kunci Komit dan Rollback terutama digunakan untuk Transaksi MySQL.
- Ketika sebuah transaksi yang berhasil selesai, perintah COMMIT harus dikeluarkan sehingga perubahan pada semua tabel yang terlibat akan diberlakukan.
- Jika kegagalan terjadi, perintah ROLLBACK harus dikeluarkan untuk kembali setiap meja direferensikan dalam transaksi tersebut ke keadaan sebelumnya.
Anda dapat mengontrol perilaku transaksi dengan menetapkan variabel sesi yang disebut autocommit. Jika autocommit diatur ke 1 (default), maka setiap pernyataan SQL (dalam transaksi atau tidak) dianggap sebagai transaksi yang lengkap, dan berkomitmen secara default ketika selesai. Ketika autocommit diatur ke 0, dengan menerbitkan autocommit SET = 0 perintah, seri berikutnya dari pernyataan bertindak seperti transaksi, dan tidak ada kegiatan berkomitmen sampai pernyataan eksplisit COMMIT dikeluarkan.
Anda dapat mengeksekusi perintah SQL ini di PHP dengan menggunakan mysql_query () fungsi.
Contoh generik Transaksi
Ini urutan kejadian adalah independen dari bahasa pemrograman yang digunakan, jalan logis dapat dibuat dalam mana bahasa yang Anda gunakan untuk membuat aplikasi Anda.
Anda dapat mengeksekusi perintah SQL ini di PHP dengan menggunakan mysql_query () fungsi.
- Mulai transaksi dengan menerbitkan perintah SQL BEGIN BEKERJA
- Masalah satu atau lebih perintah SQL seperti SELECT, INSERT, UPDATE atau DELETE
- Periksa apakah ada kesalahan ada dan semuanya sesuai dengan kebutuhan Anda.
- Jika ada kesalahan maka masalah perintah ROLLBACK jika tidak menjalankan perintah COMMIT.
Transaksi-Aman Jenis Tabel di MySQL:
Anda tidak dapat menggunakan transaksi secara langsung, Anda dapat tetapi mereka tidak akan menyimpan dan dijamin. Jika Anda berencana untuk menggunakan transaksi dalam pemrograman MySQL Anda maka Anda perlu untuk membuat tabel Anda dengan cara khusus. Ada banyak jenis tabel yang mendukung transaksi tapi satu yang paling populer adalah InnoDB.
Dukungan untuk tabel InnoDB memerlukan parameter kompilasi tertentu ketika kompilasi MySQL dari source. Jika versi MySQL tidak memiliki dukungan InnoDB, meminta Internet Service Provider untuk membangun sebuah versi dari MySQL dengan dukungan untuk tipe tabel InnoDB, atau men-download dan menginstal distribusi biner MySQL-Max untuk Windows atau Linux / UNIX dan bekerja dengan tipe tabel dalam lingkungan pengembangan.
Jika Anda instalasi MySQL mendukung tabel InnoDB, hanya menambahkan TYPE = InnoDB definisi pernyataan penciptaan meja. Sebagai contoh, kode berikut membuat tabel InnoDB disebut tcount_tbl:
root @ host # mysql-u root-p password; Masukkan sandi :******* mysql> tutorial penggunaan; Basis berubah mysql> membuat tabel tcount_tbl -> ( -> Tutorial_author varchar (40) NOT NULL, -> Tutorial_count INT ->) TYPE = InnoDB; Query OK, 0 rows affected (0,05 sec)
Periksa link berikut untuk tahu lebih banyak tentang: InnoDB
Anda dapat menggunakan tabel jenis lain seperti GEMINI atau BDB tapi itu tergantung pada instalasi Anda jika mendukung kedua jenis.