"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL INSERT 문을 조건부로 만들 수 있나요?

MySQL INSERT 문을 조건부로 만들 수 있나요?

2024년 11월 11일에 게시됨
검색:231

Can MySQL INSERT Statements Be Made Conditional?

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_condition

SELECT 문이 행을 반환하지 않으면(즉, 특수 조건이 false인 경우) 삽입이 발생하지 않습니다.

예:

For 지정된 스키마:

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