집 >데이터 베이스 >MySQL 튜토리얼 >mysql 자체 증가 AUTO_INCREMENT 인스턴스 사용량
AUTO_INCREMENT를 사용하는 이유는 무엇인가요?
고객 및 주문 테이블을 다시 살펴보겠습니다. 고객 테이블의 고객은 cust_id 열로 고유하게 식별되며 각 고객은 고유 번호를 갖습니다. 마찬가지로 주문 테이블의 각 주문에는 고유한 주문 번호가 있으며, 이는 order_num 열에 저장됩니다. 이 숫자는 고유하다는 점 외에는 특별한 의미가 없습니다. 신규 고객 추가 또는 신규 주문 시 신규 고객 ID 또는 주문 번호가 필요합니다. 이러한 숫자는 고유한 한 임의적일 수 있습니다.
분명히 사용되는 가장 간단한 숫자는 다음 숫자입니다. 소위 다음 숫자는 현재 최대 숫자보다 큰 숫자입니다. 예를 들어, cust_id의 최대 수가 10005인 경우 테이블에 삽입되는 다음 고객의 cust_id는 10006일 수 있습니다.
간단한가요? 반드시 그런 것은 아닙니다. 사용할 다음 값을 어떻게 결정합니까? 물론 SELECT 문을 사용하여 (Max() 함수를 사용하여) 가장 큰 숫자를 찾은 다음 여기에 1을 더할 수 있습니다. 그러나 이는 신뢰할 수 없으며(실행하는 SELECT 및 INSERT 문 사이에 다른 사람이 행을 삽입하지 못하도록 하는 방법을 찾아야 하며, 이는 다중 사용자 응용 프로그램에서 발생할 가능성이 매우 높습니다), 그리 효율적이지 않습니다(추가 MySQL 작업 수행). 확실히 이상적이지 않습니다).
여기서 AUTO_INCREMENT가 적용됩니다. 다음 코드 줄을 고려하십시오(고객 테이블을 생성하는 데 사용되는 CREATE TABLE 문의 일부):
cust_id int NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT 사용법
AUTO_INCREMENT는 MySQL에게 이 열이 행을 추가할 때 자동으로 증가할 때마다 사용됩니다. INSERT 작업이 수행될 때마다 MySQL은 자동으로 열을 증가시키고(따라서 키워드 AUTO_INCREMENT) 사용 가능한 다음 값을 열에 할당합니다. 이는 기본 키 값으로 사용할 수 있는 고유한 cust_id를 각 행에 할당합니다.
참고:
테이블당 하나의 AUTO_INCREMENT 열만 허용되며 인덱싱해야 합니다(예: 기본 키로 만들어서). AUTO_INCREMENT 재정의 열이 AUTO_INCRE-MENT로 지정된 경우 특수 값을 사용해야 합니까? INSERT 문에서 간단히 값을 지정할 수 있으며, 해당 값이 고유한 경우(지금까지 사용되지 않은 경우) 자동으로 생성된 값 대신 해당 값이 사용됩니다. 이후의 증분은 수동으로 삽입된 값을 사용하여 시작됩니다.
단점:
AUTO_INCREMENT 값 결정 MySQL이 자동 증가를 통해 기본 키를 생성하도록 할 때의 한 가지 단점은 값이 누구인지 알 수 없다는 것입니다. 입니다.
last_insert_id() 함수 선택
이 시나리오를 고려해보세요. 새 주문을 추가하는 중입니다. 이를 위해서는 주문 테이블에 행을 생성한 다음 주문한 각 항목에 대해 orderitms 테이블에 행을 생성해야 합니다. order_num은 orderitems 테이블의 주문 세부정보와 함께 저장됩니다. 이것이 주문 테이블과 orderitems 테이블이 관련 테이블인 이유입니다. 이를 위해서는 분명히 주문 행을 삽입한 후 orderitems 행을 삽입하기 전에 결과 order_num을 알아야 합니다.
그럼 AUTO_INCREMENT 열을 사용할 때 이 값을 어떻게 얻나요? 이 값은 아래와 같이 last_insert_id() 함수를 사용하여 얻을 수 있습니다.
select last_insert_id()
이 명령문은 마지막 AUTO_INCREMENT 값을 반환하며, 이후 MySQL 명령문에서 사용할 수 있습니다.
[관련 권장 사항]
php 중국어 웹사이트의 특별 권장 사항: php 프로그래머 도구 상자 다운로드(원클릭으로 PHP 환경 구축)
mysql 데이터베이스의 기본 키에 대한 자세한 설명
위 내용은 mysql 자체 증가 AUTO_INCREMENT 인스턴스 사용량의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!