目次
まず、auto_increment は自己インクリメント制約に注意する必要があります。
1 データベース テーブル クラスを作成します: (ここでは mysql8 バージョンを使用します)
2 データベース テーブル クラスの情報の説明:
3 データベース テーブル クラスで、データを挿入します:
エラー メッセージによると、2 回目のデータ挿入が失敗したことがわかります。
4 テーブル クラスのデータを確認します。
5 データを再度挿入し、テーブル クラスを確認します。
この図では、初めて挿入したときに形式が間違っていることがわかります。他の 2 つの挿入は成功しました。
6 データ 100 を挿入し、自動インクリメントを入力して再度データを挿入します。
データ 100 を挿入した後、自動インクリメントが 100 から開始されることがわかります。
7 データ 10 を挿入した後、自動インクリメントが実行され、その後、自動インクリメントが再度実行されます。
自己インクリメントは 10 からではなく、101 から始まることがわかります。このことから、元のテーブルの自動インクリメント フィールドの最大値である 8 から自動インクリメントが開始されることがわかります。自動インクリメント フィールドの最大値を削除してから、自動インクリメントを実行します。
最大
値 103 が削除されても、新しく挿入されたデータは引き続き 103 から自動インクリメントされることがわかります。!!
添付ファイル: データの挿入が失敗した場合でも、データは自動的にインクリメントされます。
1>データベーステーブルの作成:
2>データの挿入:
2 回目のデータ挿入は失敗していることがわかりますが、3 回目のデータ挿入では実際には 101 から増加し始めています。!!挿入に失敗しても自動でインクリメントできるのは本当にすごいですね!
3> ただし、次の 2 種類のエラーが発生した場合、挿入に失敗した後、自己インクリメントは実行されません。
概要: 最初のデータ挿入でエラーが発生し、自己インクリメントは実行できます。2 つのエラーが発生した後に自動インクリメントを実行できない理由は、
最初にエラーが発生したとき、エラーの理由はフィールド名が UNIQUE 制約の対象であり、今回挿入されたデータ 'evan' が class_s テーブルのデータ 'evan' と重複していたことでした。ただし、自動インクリメント フィールドにはエラーはなく、自動インクリメント フィールドはid
フィールドname
の前に実行されます。したがって、自己インクリメントは 101 まで正常に実行されました。
2 回目にエラーが発生した場合、エラーの理由は、自動インクリメント フィールドが PRIMARY KEY 制約の対象であり、今回挿入されたデータ 102 が class_s テーブルのデータ 102 と重複していることです。自動インクリメントフィールドでエラーが発生しました。自動インクリメントは失敗しました。
3 回目にエラーが発生した場合、エラーの理由は挿入ステートメントがinsert into
記述されていることinsert in insert into
です。完全なエラー ステートメントは次のとおりです。 insert in insert into class_s (name)values('tony');
このステートメントは自動インクリメント フィールドに対して実行されておらず、エラーのために実行が停止していることがわかります。自動インクリメントフィールドは実行されず、自動インクリメントは失敗します。
2 番目に、MySQL8 バージョンの auto_increment のエラー:
エラー メッセージ: エラー 1075 (42000): テーブル定義が正しくありません。自動列は 1 つだけ存在でき、キーとして定義する必要があります。これは、auto_increment を含む
フィールドをキーとして定義する必要があることを意味します。!!
フィールド制約のキーには、PRIMARY KEY (主キー)、FOREIGN KEY (外部キー)、UNIQUE (一意キー) の 3 種類があります。
以下は、これら 3 つのキー定義後にデータベース テーブルを正常に作成する例です。
PRIMARY KEY (主キー):
FOREIGN KEY (外部キー):
UNIQUE (一意のキー):