Rumah > pangkalan data > tutorial mysql > Adakah Perintah Penilaian Penyata SQL UPDATE Mengikut Piawaian, dan Bagaimana Pangkalan Data Berbeza Mengendalikannya?

Adakah Perintah Penilaian Penyata SQL UPDATE Mengikut Piawaian, dan Bagaimana Pangkalan Data Berbeza Mengendalikannya?

Barbara Streisand
Lepaskan: 2024-12-27 05:05:12
asal
840 orang telah melayarinya

Does SQL UPDATE Statement Evaluation Order Follow a Standard, and How Do Different Databases Handle It?

SQL UPDATE Evaluation Order

Dalam pernyataan SQL UPDATE, susunan penilaian menentukan sama ada ungkapan seterusnya bergantung pada nilai yang diubah suai. Artikel ini meneroka susunan penilaian dalam pertanyaan:

UPDATE tbl SET q = q + 1, p = q;
Salin selepas log masuk

Perintah Penilaian MySQL

Dalam MySQL, susunan penilaian ialah "kiri ke kanan." Ini bermakna ungkapan "q 1" dinilai sebelum "q" dalam tugasan kepada "p." Oleh itu, tbl.p akan ditetapkan kepada nilai q sebelum ia dinaikkan.

SQL Standard

Mengikut spesifikasi SQL92, "[The value expressions] dinilai secara berkesan untuk setiap baris T sebelum mengemas kini mana-mana baris T." Walau bagaimanapun, kenyataan ini tidak jelas dengan jelas.

Pelaksanaan dan Tingkah Laku

Walaupun standard, pelaksanaan berbeza mengikut susunan penilaiannya. Ujian telah menunjukkan bahawa pangkalan data berikut menetapkan tbl.p kepada q:

  • Oracle XE (10g)
  • PostgreSQL 8.4.2
  • SQLite 3.3.6
  • SQL Server 2016

Sebaliknya, pangkalan data berikut menetapkan tbl.p kepada q 1:

  • Firebird 2.5
  • InterBase 2009
  • MySQL 5.0.77

Kemas Kini Pepijat dan Dokumentasi MySQL

MySQL sebelum ini telah menentang tingkah laku majoriti, tetapi pepijat telah dibangkitkan dan dokumentasi telah dikemas kini untuk mencerminkan secara eksplisit perintah penilaian "kiri ke kanan". Tingkah laku ini ditandakan sebagai perbezaan daripada Standard SQL.

Atas ialah kandungan terperinci Adakah Perintah Penilaian Penyata SQL UPDATE Mengikut Piawaian, dan Bagaimana Pangkalan Data Berbeza Mengendalikannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan