Rumah >pangkalan data >tutorial mysql >Bolehkah Penyata MySQL INSERT Dibuat Bersyarat?

Bolehkah Penyata MySQL INSERT Dibuat Bersyarat?

Susan Sarandon
Susan Sarandonasal
2024-11-14 16:25:02327semak imbas

Can MySQL INSERT Statements Be Made Conditional?

Pernyataan INSERT Bersyarat dalam MySQL

Soalan: Adakah boleh melaksanakan operasi INSERT secara bersyarat, sama seperti JIKA penyata?

Huraian:

Andaikan kami perlu membuat pesanan untuk 20 item dengan ID produk 2. Untuk memastikan stok mencukupi, kami terlebih dahulu menyemak kuantiti di tangan:

SELECT IF(
    ( SELECT SUM(qty) FROM orders WHERE product_id = 2  ) + 20
    <=
    ( SELECT qty_on_hand FROM products WHERE id = 2)
, 'true', 'false');

Jika hasilnya benar, kami melaksanakan pertanyaan INSERT. Walau bagaimanapun, pendekatan ini terdedah kepada isu konkurensi. Pesanan serentak berbilang boleh mengakibatkan penjualan berlebihan.

Jawapan:

Ya, pernyataan INSERT bersyarat boleh dilakukan menggunakan sintaks berikut:

INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition

Jika kenyataan SELECT tidak mengembalikan baris (iaitu, syarat khas adalah palsu), tiada sisipan berlaku.

Contoh:

Untuk skema yang diberikan:

products: id, qty_on_hand
orders: id, product_id, qty
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;

Pertanyaan ini hanya akan memasukkan baris jika terdapat mencukupi stok di tangan. Jika tidak, ia tidak akan melaksanakan sisipan.

Atas ialah kandungan terperinci Bolehkah Penyata MySQL INSERT Dibuat Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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