Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan Kembalikan MySQL

Terkadang Anda mungkin perlu membatalkan perubahan yang dibuat pada database MySQL. Anda dapat dengan mudah melakukannya menggunakan kueri MySQL Rollback. Berikut cara rollback database MySQL menggunakan perintah MySQL Rollback.

Bagaimana cara kerja rollback MySQL

Pernyataan MySQL Rollback memungkinkan Anda untuk mengembalikan atau membatalkan satu pernyataan lagi yang baru saja dieksekusi. Misalnya, jika Anda secara tidak sengaja menghapus atau memperbarui baris, Anda dapat menggunakan MySQL untuk mengembalikan pernyataan tersebut dan memulihkan database asli. Namun, rollback MySQL hanya berfungsi jika perubahan database TIDAK dilakukan ke database.

Bonus Baca :Cara Menggunakan MySQL Rollup

Bisakah kita melakukan rollback setelah melakukan di MySQL

Tidak. Sayangnya Anda tidak dapat membatalkan perubahan yang telah dilakukan ke database.

Cara Mengembalikan database MySQL

Harap dicatat, secara default, MySQL dikonfigurasi untuk melakukan komit otomatis setiap kueri SQL. Jadi penting untuk mematikan auto commit di MySQL menggunakan pernyataan berikut, jika Anda ingin dapat menggunakan MySQL Rollback.

Masuk ke database MySQL dan jalankan perintah berikut untuk menonaktifkan autocommit

SET autocommit = 0

Atau

SET autocommit = OFF

Anda menggunakan pernyataan berikut untuk mengaktifkan mode autocommit secara eksplisit:

SET autocommit = 1

Atau

SET autocommit = ON

Bonus Baca :Cara Cek Versi MySQL

Katakanlah Anda memiliki tabel berikut penjualan(produk,tanggal_pesanan,penjualan) . Kita akan melihat bagaimana mengeluarkan MySQL rollback setelah perintah delete.

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

Sekarang mari kita matikan autocommit seperti yang disebutkan di atas,

mysql> set autocommit=0;

Selanjutnya, mari kita hapus semua baris dalam tabel penjualan.

mysql> delete from sales;
Query OK, 5 rows affected (0.00 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        0 |
+----------+

Seperti yang Anda lihat, 5 baris dalam tabel penjualan telah dihapus.

Sekarang, mari kita keluarkan MySQL Rollback setelah menghapus perintah

mysql> rollback;
Query OK, 0 rows affected (0.07 sec)

mysql> select count(*) from sales;
+----------+
| count(*) |
+----------+
|        5 |
+----------+

Seperti yang Anda lihat, 5 baris yang dihapus telah dipulihkan sejak perubahan tidak dilakukan. Namun, jika Anda memiliki masalah pernyataan COMMIT setelah penghapusan dan sebelum perintah ROLLBACK, maka MySQL tidak akan memulihkan tabel Anda.

Bonus Baca :Cara Menonaktifkan Pemeriksaan Kunci Asing di MySQL

Perintah Pembaruan Rollback MySQL

Demikian pula, Anda dapat mengembalikan perintah pembaruan. Mari kita perbarui obral kolom di atas penjualan tabel.

mysql> set autocommit=0;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+
5 rows in set (0.00 sec)

mysql> update sales set sale=sale*2;
Query OK, 5 rows affected (0.05 sec)


mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   40 |
| B       | 2020-01-02 |   50 |
| B       | 2020-01-03 |   30 |
| A       | 2020-01-04 |   60 |
| A       | 2020-01-05 |   40 |
+---------+------------+------+

Seperti yang Anda lihat, kami telah menggandakan nilai kolom penjualan. Sekarang mari kita kembalikan perintah pembaruan.

mysql> rollback;

mysql> select * from sales;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-01-01 |   20 |
| B       | 2020-01-02 |   25 |
| B       | 2020-01-03 |   15 |
| A       | 2020-01-04 |   30 |
| A       | 2020-01-05 |   20 |
+---------+------------+------+

Seperti yang Anda lihat, kolom penjualan nilai lama telah dipulihkan.

Anda juga dapat menyertakan MySQL Rollback dalam prosedur tersimpan dan transaksi MySQL untuk MySQL Rollback jika terjadi kesalahan. Kuncinya adalah menonaktifkan autocommit untuk menjalankan rollback MySQL.

Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menulis parameter opsional dalam prosedur tersimpan di MySQL?

  2. Menyiapkan MySQL InnoDB Cluster dengan MySQL Shell (plus MySQL Router)

  3. Mekanisme untuk melacak perubahan skema DB

  4. mysql_fetch_assoc():argumen yang diberikan bukan sumber hasil MySQL yang valid di php

  5. INTERSECT di MySQL