ホームページ  >  記事  >  データベース  >  自動インクリメントフィールド auto_commit の調査と分析

自動インクリメントフィールド auto_commit の調査と分析

黄舟
黄舟オリジナル
2017-02-17 11:44:231268ブラウズ


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 です。もちろん、ステートメント insert into t select 5, 'a44'; を実行すると、成功します。

5

innodb_autoinc_lock_made

次に、mysql データベースを再起動し、「%innodb_autoinc_lock_mode%」などの変数を表示すると、値が 0 であることが確認され、変更が成功しました。



7. 自動インクリメントフィールドのみを含むテーブルに入力する方法
[mysqld]
innodb_autoinc_lock_mode = 0


7.1 自分で値を挿入する



7.2 mysql関数LAST_INSERT_ID();
を呼び出す
りー

ps: ここでの値は 0 です。最後の挿入が入力された値であり、この関数が呼び出されなかったためです。そのため、初期値は 0 からですが、テーブルへの通常の挿入値には影響しません。

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上記は、自動追加フィールド auto_commit の調査と分析の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。