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

Memanggil prosedur di dalam fungsi melempar MySQL ERROR 1422

Ada sejumlah pernyataan yang menyebabkan komit implisit, dan tidak satu pun dari pernyataan ini dapat digunakan di dalam fungsi tersimpan atau pemicu, atau dalam prosedur tersimpan yang dipanggil dari fungsi atau pemicu tersimpan, karena itu tidak benar-benar berbeda dalam efek bersihnya.

Refleksi sesaat menjelaskan alasannya:fungsi tersimpan (dan pemicu) mengeksekusi saat kueri sedang berjalan . Mereka selalu, tanpa kecuali, mulai mengeksekusi setelah kueri dimulai, dan selesai mengeksekusi sebelum kueri selesai. Mereka juga dapat berjalan beberapa kali selama eksekusi satu kueri, terutama saat kueri melibatkan banyak baris.

Dalam hal itu, tidak masuk akal jika mungkin untuk COMMIT transaksi saat satu kueri sedang berjalan... dan itulah START TRANSACTION tidak, jika transaksi sedang berjalan -- transaksi tersebut secara implisit melakukan transaksi saat ini, dan memulai transaksi baru.

Ini baik-baik saja dalam prosedur tersimpan, selama Anda tidak memanggilnya di tengah kueri lain (melalui fungsi atau pemicu tersimpan, yang merupakan satu-satunya cara untuk menjalankan prosedur di tengah kueri lain) tetapi melakukan apa yang Anda lakukan di sini tidak didukung... meskipun tidak ada transaksi yang berjalan, tetap tidak mungkin untuk memulai transaksi di tengah kueri yang sedang berjalan.

http://dev.mysql.com/doc/refman /5.6/en/implicit-commit.html




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Isi Array PHP dari While Loop

  2. Rails 3 ActiveRecord:Pesan berdasarkan jumlah asosiasi

  3. Springboot pembuatan database otomatis dan mysql

  4. SQL Query:urutkan berdasarkan panjang karakter?

  5. Hasil database sebagai objek atau array?