Heim > Datenbank > MySQL-Tutorial > Hauptteil

Können MySQL-INSERT-Anweisungen an Bedingungen geknüpft werden?

Susan Sarandon
Freigeben: 2024-11-14 16:25:02
Original
258 Leute haben es durchsucht

Can MySQL INSERT Statements Be Made Conditional?

Bedingte INSERT-Anweisungen in MySQL

Frage: Ist es möglich, eine INSERT-Operation bedingt auszuführen, ähnlich einer IF-Erklärung?

Ausarbeitung:

Angenommen, wir müssen eine Bestellung für 20 Artikel mit der Produkt-ID 2 aufgeben. Um einen ausreichenden Lagerbestand sicherzustellen, prüfen wir zunächst die verfügbare Menge :

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

Wenn das Ergebnis wahr ist, führen wir die INSERT-Abfrage aus. Dieser Ansatz ist jedoch anfällig für Parallelitätsprobleme. Mehrere gleichzeitige Bestellungen können zu Überverkäufen führen.

Antwort:

Ja, bedingte INSERT-Anweisungen sind mit der folgenden Syntax möglich:

INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
Nach dem Login kopieren

If Die SELECT-Anweisung gibt keine Zeilen zurück (d. h. die Sonderbedingung ist falsch), es erfolgt keine Einfügung.

Beispiel:

Für das angegebene Schema:

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

Diese Abfrage fügt nur dann eine Zeile ein, wenn ausreichend Lagerbestand vorhanden ist. Andernfalls wird die Einfügung nicht ausgeführt.

Das obige ist der detaillierte Inhalt vonKönnen MySQL-INSERT-Anweisungen an Bedingungen geknüpft werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage