Tutorial manual...login
Tutorial manual terbaru MySQL
pengarang:php.cn  masa kemas kini:2022-04-15 14:04:12

transaksi MySQL


Transaksi MySQL

Transaksi MySQL digunakan terutamanya untuk memproses data dengan operasi yang besar dan kerumitan yang tinggi. Sebagai contoh, dalam sistem pengurusan kakitangan, jika anda memadam seseorang, anda perlu memadam maklumat asas orang itu, dan juga memadam maklumat yang berkaitan dengan orang itu, seperti peti mel, artikel, dll. Dengan cara ini, pangkalan data ini penyata operasi membentuk urus niaga!

  • Dalam MySQL, hanya pangkalan data atau jadual yang menggunakan enjin pangkalan data Innodb menyokong transaksi.

  • Pemprosesan transaksi boleh digunakan untuk mengekalkan integriti pangkalan data dan memastikan kumpulan pernyataan SQL sama ada semuanya dilaksanakan atau tidak dilaksanakan sama sekali.

  • Urus niaga digunakan untuk mengurus sisipan, kemas kini, memadam penyata

Secara umumnya, urus niaga mesti memenuhi 4 syarat (ACID): Atomicity (juga dipanggil tidak boleh dibahagikan), konsistensi (Konsistensi), pengasingan (juga dipanggil kemerdekaan), dan ketahanan (Durability).

  • Atomicity: Semua operasi dalam transaksi sama ada akan selesai atau tidak selesai, dan tidak akan berakhir pada mana-mana peringkat pertengahan. Jika ralat berlaku semasa pelaksanaan urus niaga, ia akan digulung semula ke keadaan sebelum urus niaga bermula, seolah-olah urus niaga itu tidak pernah dilaksanakan.

  • Ketekalan: Integriti pangkalan data tidak terjejas sebelum urus niaga bermula dan selepas urus niaga tamat. Ini bermakna bahawa data yang ditulis mesti mematuhi sepenuhnya semua peraturan pratetap, termasuk ketepatan dan penyatuan data, dan pangkalan data seterusnya boleh menyelesaikan kerja yang telah ditetapkan secara spontan.

  • Pengasingan: Pangkalan data membenarkan berbilang urus niaga serentak untuk membaca, menulis dan mengubah suai datanya pada masa yang sama Pengasingan boleh mengelakkan rasuah data akibat pelaksanaan silang apabila berbilang transaksi dilaksanakan secara tidak konsisten . Pengasingan urus niaga dibahagikan kepada tahap yang berbeza, termasuk baca tanpa komitmen, baca komited, baca berulang dan boleh bersiri.

  • Kegigihan: Selepas transaksi selesai, pengubahsuaian data adalah kekal dan tidak akan hilang walaupun sistem gagal.

Nota: Di bawah tetapan lalai baris arahan MySQL, transaksi dilakukan secara automatik, iaitu, operasi COMMIT akan dilaksanakan serta-merta selepas melaksanakan pernyataan SQL . Oleh itu, untuk memulakan transaksi secara eksplisit, anda mesti menggunakan perintah BEGIN atau START TRANSACTION, atau laksanakan arahan SET AUTOCOMMIT=0 untuk melumpuhkan penggunaan komit automatik untuk sesi semasa.

Penyata kawalan urus niaga:

  • MULAKAN atau MULAKAN TRANSAKSI dengan jelas

  • COMMIT; anda juga boleh menggunakan COMMIT WORK, tetapi ia adalah setara. COMMIT akan melakukan transaksi dan membuat semua pengubahsuaian pada pangkalan data kekal; Rollback akan menamatkan urus niaga pengguna dan membuat asal semua pengubahsuaian tanpa komitmen yang sedang dijalankan;

  • Pengecam SAVEPOINT; membenarkan penciptaan titik simpanan dalam transaksi, dan boleh terdapat berbilang SAVEPOINT dalam transaksi; titik Simpan transaksi, apabila tiada titik simpan yang ditentukan, melaksanakan penyataan ini akan mengeluarkan pengecualian; 🎜 >

  • SET TRANSAKSI; digunakan untuk menetapkan tahap pengasingan transaksi. Tahap pengasingan urus niaga yang disediakan oleh enjin storan InnoDB ialah READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ dan SERIALIZED.
  • Terdapat dua kaedah utama untuk pemprosesan transaksi MYSQL:

  • Gunakan BEGIN, ROLLBACK, KOMIT Untuk melaksanakan

MULAKAN untuk memulakan transaksi

GOLONG balik transaksi

    Pengesahan Transaksi COMMIT
  • 2 Gunakan SET terus untuk menukar mod autokomit MySQL:

  • SET AUTOCOMMIT=0. Autocommit dilarang

SET AUTOCOMMIT=1 Hidupkan autocommit

  • Ujian Transaksi

  • rreee
  • Menggunakan kejadian transaksi dalam PHP

MySQL ORDER BY ujian:

mysql> use DEMO;
Database changed
mysql> CREATE TABLE demo_transaction_test( id int(5)) engine=innodb;  # 创建数据表
Query OK, 0 rows affected (0.04 sec)
 mysql> select * from demo_transaction_test;Empty set (0.01 sec)
 mysql> begin;  # 开始事务Query OK, 0 rows affected (0.00 sec)
 mysql> insert into demo_transaction_test value(5);Query OK, 1 rows affected (0.01 sec)
 mysql> insert into demo_transaction_test value(6);Query OK, 1 rows affected (0.00 sec)
 mysql> commit; # 提交事务
Query OK, 0 rows affected (0.01 sec)
 mysql>  select * from demo_transaction_test;
+------+
| id   |
+------+
| 5    |
| 6    |
+------+2 rows in set (0.01 sec)
 mysql> begin;    # 开始事务
Query OK, 0 rows affected (0.00 sec)
 mysql>  insert into demo_transaction_test values(7);
Query OK, 1 rows affected (0.00 sec)
 mysql> rollback;   # 回滚
Query OK, 0 rows affected (0.00 sec)
 mysql>   select * from demo_transaction_test;   # 因为回滚所以数据没有插入+------+
| id   |
+------+
| 5    |
| 6    |
+------+2 rows in set (0.01 sec)
 mysql>

Cadangan tutorial video berkaitan

Sintaks transaksi

Konsep asas pemprosesan transaksi MySQL