自增字段 auto_commit的研究分析

mysql自增字段,自增字段計數器在主存儲里面,不在硬盤上(this counter is stored only in main memory, not on disk)。
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,然后你insert into t select 9, ‘a44’;那么這個時候,MAX(id)就是9,
那么下一個自增值就是16而不是5,當然了,你執行語句insert into t select 5, ‘a44’;也是可以通過的。

5,如果有事務的話,insert之后了rollback,autocommit里面的counter不會回滾,依然+1.

6,參數

innodb_autoinc_lock_made

在my.cnf里面直接添加一行

[mysqld]  innodb_autoinc_lock_mode?=?0

然后重啟mysql數據庫,執行show variables like ‘%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進去

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,是因為上一次insert是錄入的值,沒有調用此函數,所以從0時初始值,但是不影響正常的insert到表的值。

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

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享