mysql では、「AUTO_INCREMENT」を使用して、不連続な自動インクリメント ID の問題を解決できます。「AUTO_INCREMENT」は、主キーの自動増加を設定するために使用されます。自動インクリメントを設定するだけで済みます。構文は「ALTER TABLE テーブル名 AUTO_INCREMENT=1」です。
このチュートリアルの動作環境: Windows10 システム、mysql8.0.22 バージョン、Dell G3 コンピューター。
MySQL は navicat に一意のフィールドを設定します。
Index (select field) >>>インデックス タイプ (UNIQUE)
テーブル内に一意のフィールドがあり、主キー ID がインクリメントされる場合、新しいデータを挿入するときに一意のフィールドがすでに存在しており、挿入は失敗します。
ただし、このとき、idが1つ増えて再度データが挿入される IDが不連続になる問題。
-- 実行後、挿入された ID が 1 に設定されることを示すのではなく、挿入された ID はテーブル内の最大 ID 値 1 に設定されます。
ALTER TABLE `table` AUTO_INCREMENT =1;
挿入操作の前に上記の SQL ステートメントを追加し、挿入 ID を現在のテーブルに存在する ID 1 に設定します。
auto_increment は主キーの自動拡張に使用されます。 1 から始まり、最初のレコードを削除して 2 番目のホップ データを挿入すると、主キーの値は 1 ではなく 2 になります。
例:
create table `test` ( `id` int(10) not null auto_increment, -- 表示自增列 `name` varchar(20) not null, primary key(`id`) )
auto_increment = 1; -- 自動インクリメントの開始サイズを示します -- このようにして、ID を指定してテーブル `test` を作成できます。自動インクリメント列
-- ステートメントを実行します insert into test (`name`) 値 ('name');
-- 次のようにデータ行を挿入できます。 'name'
拡張情報:
AUTO_INCREMENT を使用する場合は、次の点に注意する必要があります:
1. AUTO_INCREMENT はデータ列の属性であり、データ列にのみ適用されます。整数型のデータ列。
2. AUTO_INCREMENT 属性が設定されるデータ列は正のシーケンスである必要があるため、シーケンスの数を 2 倍にできるように、データ列を UNSIGNED として宣言する必要があります。
3. AUTO_INCREMENT データ列には、シリアル番号 (つまり、主キーまたは主キーの一部) の繰り返しを避けるために一意のインデックスが必要です。 AUTO_INCREMENT データ列には NOT NULL 属性が必要です。
4. AUTO_INCREMENT データ列の最大数は、列のデータ型によって異なります。たとえば、TINYINT データ列の最大数は 127 です。UNSIGNED が追加された場合、最大数は 255 です。上限に達すると、AUTO_INCREMENT は無効になります。
5. テーブル全体を削除すると、MySQL AUTO_INCREMENT は番号付けを 1 から再開します。
これは、テーブル全体の操作を実行するときに、MySQL (PHP との最適な組み合わせ) が実際にそのような最適化操作を実行するためです: 最初にデータ テーブル内のすべてのデータとインデックスを削除し、次にデータ テーブルを再構築します。
すべてのデータ行を削除し、シーケンス番号情報を保持したい場合は、MySQL の最適化を抑制する where を指定した delete コマンドを使用できます (PHP との最適な組み合わせ): delete from table_name where 1;
推奨される学習: mysql ビデオ チュートリアル
#以上がmysqlの自己増加IDが連続していない場合はどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。