«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Можно ли сделать операторы MySQL INSERT условными?

Можно ли сделать операторы MySQL INSERT условными?

Опубликовано 11 ноября 2024 г.
Просматривать:109

Can MySQL INSERT Statements Be Made Conditional?

Условные операторы INSERT в MySQL

Вопрос: Возможно ли выполнить операцию INSERT условно, аналогично Заявление ЕСЛИ?

Разработка:

Предположим, нам нужно разместить заказ на 20 товаров с идентификатором продукта 2. Чтобы обеспечить достаточный запас, мы сначала проверяем количество в наличии :

SELECT IF(
    ( SELECT SUM(qty) FROM orders WHERE product_id = 2  )   20
    

Если результат истинен, мы выполняем запрос INSERT. Однако этот подход подвержен проблемам параллелизма. Несколько одновременных заказов могут привести к перепродаже.

Ответ:

Да, условные операторы INSERT возможны с использованием следующего синтаксиса:

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

Если инструкция SELECT не возвращает строк (т. е. специальное условие ложно), вставка не происходит.

Пример:

Для данная схема:

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;

Этот запрос вставит строку только в том случае, если в наличии имеется достаточный запас. В противном случае вставка не будет выполнена.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3