반응형
새 행을 삽입하고 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
반응형
'MySql' 카테고리의 다른 글
MySQL INT 열에 NULL 값 삽입 (0) | 2020.10.14 |
---|---|
MySQL SQL 쿼리에서 LEFT JOIN의 순서를 정렬하는 방법은 무엇입니까? (0) | 2020.10.14 |
MySQL 테이블에서 두 번째로 높은 값 가져 오기 (0) | 2020.10.14 |
MySQL Laravel 컬렉션에서 요소의 인덱스를 얻는 방법 (0) | 2020.10.14 |
MySQL 데이터베이스 레코드를 배열에 저장 (0) | 2020.10.14 |
댓글