>  기사  >  데이터 베이스  >  자동 증가 필드 auto_commit 연구 및 분석

자동 증가 필드 auto_commit 연구 및 분석

黄舟
黄舟원래의
2017-02-17 11:44:231242검색


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)!


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