SQL UPDATE Susunan Penilaian
Dalam pernyataan SQL UPDATE, susunan ungkapan dinilai boleh memberi kesan yang ketara kepada hasil. Mari kita periksa pertanyaan berikut:
UPDATE tbl SET q = q + 1, p = q;
Di sini, persoalan timbul: Adakah "tbl"."p" akan ditetapkan kepada q atau q 1? Adakah susunan penilaian dikawal oleh standard SQL?
Pelaksanaan Berbeza
Walaupun kekurangan kejelasan dalam standard SQL, pelaksanaan pangkalan data yang berbeza mengendalikan susunan penilaian secara berbeza. Ujian telah mendedahkan pelbagai tingkah laku merentas Firebird, InterBase, MySQL, Oracle, PostgreSQL, SQLite dan SQL Server. Dalam kebanyakan kes, nilai "p" ditetapkan kepada q 1, menunjukkan penilaian dari kiri ke kanan.
Tafsiran Standard
Walau bagaimanapun, tafsiran bagi spesifikasi SQL92 mencadangkan bahawa standard yang dimaksudkan untuk ekspresi dinilai sebelum sebarang baris dikemas kini. Ini akan menyebabkan "p" ditetapkan kepada q.
Pendekatan Unik MySQL
MySQL menonjol sebagai satu-satunya pangkalan data yang diuji yang "melihat" nilai baharu semasa penilaian. Tingkah laku ini berbeza daripada kebanyakan pelaksanaan lain dan mungkin mengakibatkan hasil yang tidak dijangka.
Kesimpulan
Walaupun standard SQL tidak mempunyai panduan yang jelas tentang susunan penilaian, ia biasanya diandaikan bahawa ungkapan harus dinilai sebelum kemas kini digunakan. Walau bagaimanapun, pelaksanaan berbeza-beza dan pembangun harus mengetahui kemungkinan percanggahan. Dalam kes di mana susunan penilaian adalah kritikal, adalah disyorkan untuk menggunakan pembolehubah perantaraan untuk mentakrifkan susunan operasi yang diingini dengan jelas.
Atas ialah kandungan terperinci KEMASKINI SQL: Adakah `p = q` Mencerminkan Nilai `q` Asal atau Dikemas kini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!