Pernyataan INSERT MySQL Bersyarat
Dalam pengurusan pangkalan data, terdapat situasi apabila memasukkan data ke dalam jadual hanya boleh berlaku dalam keadaan tertentu. Walaupun prosedur tersimpan boleh digunakan untuk sisipan bersyarat, mungkin lebih cekap untuk melaksanakan operasi sedemikian dalam satu pertanyaan.
Pernyataan INSERT Bersyarat Tersuai
Dalam MySQL, bersyarat sisipan boleh dicapai menggunakan pertanyaan dalam format berikut:
INSERT INTO TABLE SELECT value_for_column1, value_for_column2, ... FROM wherever WHERE your_special_condition
Jika subquery dinyatakan dalam WHERE your_special_condition tidak mengembalikan baris (cth., syarat adalah palsu), operasi INSERT tidak akan berlaku.
Contoh
Pertimbangkan senario berikut: anda mempunyai jadual produk (produk) dengan lajur qty_on_hand dan jadual pesanan (pesanan) dengan product_id dan lajur qty. Apabila menerima pesanan untuk produk tertentu, anda ingin memastikan bahawa terdapat kuantiti yang mencukupi di tangan sebelum memasukkan pesanan.
Menggunakan pernyataan INSERT bersyarat, anda boleh menggabungkan semakan kuantiti dan operasi sisipan menjadi satu pertanyaan:
insert into orders (product_id, qty) select 2, 20 where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Pertanyaan ini akan memasukkan baris pesanan baharu hanya jika terdapat kuantiti yang mencukupi di tangan untuk produk yang dinyatakan.
Pertimbangan Keselarasan
Adalah penting untuk ambil perhatian bahawa walaupun dengan pernyataan INSERT bersyarat, isu konkurensi mungkin timbul. Jika berbilang pesanan dibuat secara serentak, berbilang pertanyaan mungkin menyemak kuantiti di tangan sebelum sebarang pesanan telah dimasukkan. Ini masih boleh menyebabkan penjualan berlebihan jika kuantiti di tangan tidak dikemas kini sebelum pesanan berikutnya dibuat. Untuk menangani perkara ini, anda harus mempertimbangkan untuk melaksanakan mekanisme kawalan serentak yang sesuai, seperti mengunci atau transaksi.
Atas ialah kandungan terperinci Bagaimanakah saya boleh Melaksanakan Pernyataan INSERT Bersyarat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!