MySQL 자동 증가 필드인 자동 증가 필드 카운터는 하드 디스크가 아닌 메인 스토리지에 있습니다(이 카운터는 디스크가 아닌 메인 메모리에만 저장됩니다).
1. 테이블을 추가하고 자동 증가 기본 키 필드를 설정합니다.
create table t(id int primary key auto_increment, name varchar(3000)) engine=innodb;
2. 입력 자동 증가를 수동으로 설정할 수 있습니다.
insert into t select 4, 'a44'; insert into t(name) select 'a8';
3, 현재 테이블의 자동 증가 값 쿼리
SELECT MAX(id) FROM t FOR UPDATE;
4, 자동- 설정한 증분 값이 현재 값을 초과합니다. 최대 자체 증분 값은 설정한 자체 증분 값을 기준으로 하며 자동으로 증가하기 시작합니다. 예를 들면 다음과 같습니다.
SELECT MAX(id) FROM t FOR UPDATE; 결과 값은 4이고 t select 9에 'a44'를 삽입합니다. 그러면 이때 MAX(id)는 9입니다.
그러면 다음 자동 증가 값은 5가 아닌 16이 됩니다. 물론 t select 5, 'a44';에 insert 문을 실행하면 통과됩니다.
5 트랜잭션이 있으면 insert 후 롤백을 수행하고, autocommit의 카운터는 롤백되지 않으며 여전히 +1입니다.
6, 매개변수
innodb_autoinc_lock_made
my.cnf에 직접 줄 추가
[mysqld] innodb_autoinc_lock_mode = 0
그런 다음 mysql 데이터베이스를 다시 시작하고 '%innodb_autoinc_lock_mode%'와 같은 표시 변수를 실행합니다. 값이 0인 것을 확인하면 수정이 성공합니다.
7. 자동 증가 필드만 있는 테이블을 입력하는 방법
CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
7.1 원하는 값 삽입
insert into t1 select 1; mysql> select * from t1; +----+ | id | +----+ | 1 | +----+ 1 row in set (0.00 sec)
7.2 mysql 함수 호출 LAST_INSERT_ID();
mysql> SELECT LAST_INSERT_ID(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 0 | +------------------+ 1 row in set (0.01 sec)
ps: 여기 0, 마지막 삽입이 입력된 값이고 이 함수가 호출되지 않았기 때문에 초기값은 0부터이지만 테이블에 대한 일반적인 삽입 값에는 영향을 미치지 않습니다.
mysql> insert into t1 select LAST_INSERT_ID(); Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> select * from t1; +----+ | id | +----+ | 1 | | 2 | +----+ 2 rows in set (0.00 sec) mysql>
위 내용은 자체 추가된 auto_commit 필드에 대한 조사 및 분석 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 참고해주세요. (www.php.cn)!