Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Lajur Lama Sebelum Kemas Kini SQL?
Walaupun fungsinya yang mantap, klausa RETURNING SQL menghadapi had: ia hanya mendapatkan semula nilai pasca kemas kini. Ini boleh menjadi halangan apabila mencari nilai asal lajur yang dikemas kini, terutamanya dalam persekitaran yang sangat serentak.
Penyelesaian Erwin Brandstetter secara elegan menangani cabaran ini dengan menggunakan kaedah self- sertai dalam klausa FROM:
UPDATE my_table SET processing_by = our_id_info -- unique to this worker FROM my_table AS old_my_table WHERE trans_nbr IN ( SELECT trans_nbr FROM my_table GROUP BY trans_nbr HAVING COUNT(*) > 1 LIMIT our_limit_to_have_single_process_grab ) AND my_table.row_id = old_my_table.row_id RETURNING my_table.row_id, my_table.processing_by, old_my_table.processing_by AS old_processing_by
Dengan menyertai contoh jadual yang lain (old_my_table), pertanyaan boleh mendapatkan semula nilai dengan lancar sebelum kemas kini berlaku.
Dalam senario dengan beban tulis serentak yang banyak, langkah tambahan diperlukan untuk mengelakkan keadaan perlumbaan:
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Lajur Lama Sebelum Kemas Kini SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!