MySQL의 조건부 INSERT 문
질문: INSERT 작업을 조건부로 수행하는 것이 가능합니까? IF 문?
설명:
제품 ID가 2인 항목 20개를 주문해야 한다고 가정합니다. 충분한 재고를 확보하기 위해 먼저 보유 수량을 확인합니다. :
SELECT IF( ( SELECT SUM(qty) FROM orders WHERE product_id = 2 ) 20결과가 true이면 INSERT 쿼리를 실행합니다. 그러나 이 접근 방식은 동시성 문제에 취약합니다. 여러 동시 주문으로 인해 초과 판매가 발생할 수 있습니다.
답변:
예, 다음 구문을 사용하면 조건부 INSERT 문이 가능합니다.
INSERT INTO TABLE SELECT value_for_column1, value_for_column2, ... FROM wherever WHERE your_special_conditionSELECT 문이 행을 반환하지 않으면(즉, 특수 조건이 false인 경우) 삽입이 발생하지 않습니다.
예:
For 지정된 스키마:
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