Pernyataan Sisipan Bersyarat dalam MySQL
Dalam SQL, pernyataan INSERT biasanya digunakan untuk memasukkan rekod ke dalam jadual pangkalan data. Walau bagaimanapun, bagaimana jika anda perlu memasukkan rekod hanya jika syarat tertentu dipenuhi? Bolehkah anda melakukan INSERT bersyarat?
Pernyataan Masalah
Pertimbangkan senario di mana anda mempunyai dua jadual, "produk" dan "pesanan." Jadual "produk" menyimpan butiran produk dan Kuantiti Di Tangan (qty_on_hand). Jadual "pesanan" menjejaki butiran pesanan.
Andaikan pesanan masuk untuk produk tertentu, dan anda perlu menyemak sama ada terdapat kuantiti yang mencukupi untuk memenuhinya. Secara tradisinya, anda akan melaksanakan pertanyaan berasingan untuk menyemak kuantiti di tangan dan kemudian melakukan INSERT jika syarat dipenuhi. Walau bagaimanapun, pendekatan ini terdedah kepada isu konkurensi.
Penyelesaian Sisip Bersyarat
MySQL menyediakan cara mudah untuk melakukan sisipan bersyarat menggunakan sintaks SELECT...WHERE:
INSERT INTO TABLE SELECT value_for_column1, value_for_column2, ... FROM wherever WHERE your_special_condition
Sintaks ini membenarkan anda memasukkan baris ke dalam jadual hanya jika pernyataan SELECT mengembalikan baris yang memenuhi syarat yang ditentukan. Contohnya:
insert into orders (product_id, qty) select 2, 20 where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Dalam pertanyaan ini, jika subkueri mengembalikan nilai lebih daripada 20 (menunjukkan stok mencukupi), penyata INSERT akan menambah baris pada jadual "pesanan" dengan ID produk 2 dan kuantiti 20. Jika tidak, tiada baris akan disisipkan.
Faedah
Menggunakan pernyataan INSERT bersyarat menawarkan beberapa faedah:
Atas ialah kandungan terperinci Bolehkah Anda Melakukan Sisipan Bersyarat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!