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

Subquery sebagai kolom yang dihasilkan di mysql?

https://dev.mysql.com /doc/refman/5.7/en/create-table-generated-columns.html

Masuk akal bahwa ekspresi untuk kolom yang dihasilkan dapat merujuk hanya kolom dalam baris yang sama. Kolom yang dihasilkan tidak dapat menggunakan subkueri, atau mereferensikan tabel lain, atau fungsi dengan keluaran non-deterministik.

Misalkan kolom yang dihasilkan memang mendukung referensi tabel silang. Khususnya pertimbangkan kasus STORED kolom yang dihasilkan.

Jika Anda memperbarui tabel, MySQL juga harus memperbarui referensi apa pun di kolom yang dihasilkan di tempat lain dalam database, jika referensi tersebut merujuk ke baris yang Anda perbarui. Akan menjadi rumit dan mahal bagi MySQL untuk melacak semua referensi tersebut.

Kemudian pertimbangkan untuk menambahkan referensi tidak langsung melalui fungsi tersimpan.

Kemudian pertimbangkan bahwa pembaruan Anda adalah ke tabel InnoDB dalam suatu transaksi, tetapi kolom yang dihasilkan mungkin dalam tabel non-transaksi (MyISAM, MEMORY, ARCHIVE, dll.). Haruskah pembaruan Anda tercermin dalam kolom yang dihasilkan saat Anda membuatnya? Bagaimana jika Anda memutar kembali? Haruskah pembaruan Anda tercermin pada saat Anda melakukan? Lalu bagaimana MySQL "mengantre" berubah untuk diterapkan ke tabel itu? Bagaimana jika beberapa transaksi melakukan pembaruan yang memengaruhi referensi kolom yang dihasilkan? Yang mana yang harus menang, yang menerapkan perubahan terakhir atau yang berkomitmen terakhir?

Karena alasan ini, tidak praktis atau efisien untuk mengizinkan kolom yang dihasilkan untuk mereferensikan apa pun selain kolom dari baris yang sama dalam tabel yang sama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada MySQL yang setara dengan PostgreSQL array_to_string

  2. while($row =mysql_fetch_assoc($result)) - Bagaimana cara melakukan $row?

  3. MYSQL - Kelompokkan menurut batas

  4. Kueri dieksekusi dua kali (karena kesalahan) di Jawa dengan nilai yang tidak diinginkan

  5. Dapatkan Nilai yang Diperbarui di MySQL alih-alih baris yang terpengaruh