Условные операторы 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, qtyinsert 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