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

Bolehkah Penyata MySQL INSERT Dibuat Bersyarat?

Susan Sarandon
Lepaskan: 2024-11-14 16:25:02
asal
289 orang telah melayarinya

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');
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan