본문 바로가기
MySql

MySQL max () + 1 문제로 값 삽입 및 설정

by 베이스 공부 2020. 10. 14.
반응형

새 행을 삽입하고 max () + 1로 customer_id를 설정하려고합니다. 그 이유는 테이블에 이미 id라는 다른 열에 auto_increatment가 있고 테이블에 동일한 customer_id를 가진 여러 행이 있기 때문입니다.

이것으로 :

INSERT INTO customers
  ( customer_id, firstname, surname )
VALUES 
  ((SELECT MAX( customer_id ) FROM customers) +1, 'jim', 'sock')

... 다음과 같은 오류가 계속 발생합니다.

#1093 - You can't specify target table 'customers' for update in FROM clause

또한 두 명의 다른 고객이 동시에 추가되고 동일한 customer_id가없는 것을 어떻게 막을 수 있습니까?

 

해결 방법

 

맞습니다. 동일한 쿼리의 동일한 테이블에서 수정 및 선택할 수 없습니다. 두 개의 개별 쿼리에서 위의 작업을 수행해야합니다.


Lock tables customers write;

$max = SELECT MAX( customer_id ) FROM customers;

최대 ID를 잡고 삽입을 수행하십시오.

INSERT INTO customers( customer_id, firstname, surname )
VALUES ($max+1 , 'jim', 'sock')

unlock tables;

 

참조 페이지 https://stackoverflow.com/questions/5360117

 

 

반응형

댓글