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

Apakah join insert/update di MySQL merupakan operasi atom?

Saya mengerti pertanyaan Anda seperti "apakah masing-masing pertanyaan itu sendiri merupakan operasi atom?". Maka jawabannya adalah "ya". Dua jawaban lainnya benar, ketika mereka mengatakan bahwa semua pernyataan Anda bersama-sama tidak atomik.

Atomisitas dalam basis data hanya berarti semua atau tidak. Itu tidak berarti kebenaran data. Pernyataan Anda berhasil atau tidak. Ini tidak ada hubungannya dengan join atau subquery. Satu pernyataan adalah satu pernyataan, tidak peduli apakah database Anda harus menggunakan tabel sementara di memori atau di disk atau tidak.

Transaksi hanya memberi tahu database Anda untuk memperlakukan beberapa pernyataan sebagai satu pernyataan. Ketika salah satu pernyataan gagal, semuanya dibatalkan.

Topik terkait yang penting di sini adalah tingkat isolasi . Anda mungkin ingin membaca tentang itu.

EDIT (untuk menjawab komentar):

Betul sekali. Selama itu adalah pernyataan yang valid dan tidak terjadi kegagalan daya atau alasan lain mengapa kueri bisa gagal, itu sedang dilakukan. Atomicity itu sendiri hanya menjamin bahwa pernyataan sedang/sedang dilakukan atau tidak. Ini menjamin kelengkapan dan data tidak rusak (menyebabkan operasi penulisan tidak selesai atau semacamnya). Ini tidak menjamin kebenaran data Anda. Diberikan kueri seperti INSERT INTO foo SELECT MAX(id) + 1 FROM bar; Anda harus memastikan melalui pengaturan tingkat isolasi yang benar , agar Anda tidak mendapatkan pembacaan hantu atau apa pun.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ketika saya keluar dari semua input, terkadang meninggalkan garis miring (\) di string dan memasukkannya ke database. Mengapa itu terjadi dan bagaimana saya bisa menyelesaikannya?

  2. Data Hirarki - Model Kumpulan Bersarang:MySql

  3. Memperbarui kolom berdasarkan bidang yang ada

  4. Properti Objek PHP memiliki tanda kurung di dalamnya

  5. php password_verify tidak berfungsi dengan database