>  기사  >  데이터 베이스  >  MySQL INSERT 문을 조건부로 만들 수 있나요?

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

Susan Sarandon
Susan Sarandon원래의
2024-11-14 16:25:02223검색

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
    <=
    ( SELECT qty_on_hand FROM products WHERE id = 2)
, 'true', 'false');

결과가 true이면 INSERT 쿼리를 실행합니다. 그러나 이 접근 방식은 동시성 문제에 취약합니다. 여러 동시 주문으로 인해 초과 판매가 발생할 수 있습니다.

답변:

예, 다음 구문을 사용하면 조건부 INSERT 문이 가능합니다.

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

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

예:

지정된 스키마의 경우:

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;

이 쿼리는 재고가 충분한 경우에만 행을 삽입합니다. 그렇지 않으면 삽입이 실행되지 않습니다.

위 내용은 MySQL INSERT 문을 조건부로 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.