Mencapai Sisipan Bersyarat dalam MySQL
Dalam MySQL, sisipan bersyarat boleh mencabar kerana ketiadaan kata kunci khusus khusus untuk tujuan ini. Oleh itu, pendekatan alternatif mesti digunakan.
Pendekatan Menggunakan Subkueri:
Satu penyelesaian yang berkesan ialah menggunakan subkueri untuk menyemak baris sedia ada dengan kriteria padanan. Pertanyaan berikut akan memasukkan baris baharu ke dalam jadual x hanya jika baris dengan pengguna dan nilai item yang sama tidak wujud:
INSERT INTO x_table(instance, user, item) SELECT 919191, 123, 456 FROM dual WHERE NOT EXISTS (SELECT * FROM x_table WHERE user = 123 AND item = 456);
Subkueri memastikan bahawa pernyataan INSERT dilaksanakan hanya jika syarat dipenuhi. dual ialah jadual satu baris yang menyediakan sumber mudah untuk pernyataan SELECT.
Pendekatan Alternatif dengan MERGE:
Pilihan lain untuk sisipan bersyarat ialah menggunakan MERGE kenyataan. Pernyataan MERGE membenarkan kedua-dua sisipan dan kemas kini dalam satu operasi. Pertanyaan berikut akan memasukkan baris baharu ke dalam jadual x jika ia belum wujud, jika tidak, ia akan mengemas kini baris sedia ada:
MERGE INTO x_table AS target USING ( SELECT 919191 AS instance, 123 AS user, 456 AS item ) AS source ON target.user = source.user AND target.item = source.item WHEN NOT MATCHED THEN INSERT (instance, user, item) VALUES (source.instance, source.user, source.item) WHEN MATCHED THEN UPDATE SET instance = source.instance;
Dalam pendekatan ini, pernyataan MERGE menyemak baris sedia ada dengan padanan terlebih dahulu nilai pengguna dan item. Jika tiada padanan ditemui, baris baharu akan disisipkan menggunakan data daripada subkueri sumber. Jika padanan ditemui, nilai kejadian dikemas kini.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Sisipan Bersyarat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!