MySQL カラムで AUTO_INCREMENT を使用すると、シーケンス番号は常にデフォルト値の 1 または指定した値から昇順に増加します。
これが、MySQL が AUTO_INCREMENT 値を現在のシーケンス番号より小さい値に変更することを許可しない理由です。次の例で理解できます。
この例では、'emp1' という名前のテーブルがあり、テーブルの作成時に AUTO_INCREMENT 値を 100 に指定するとします。したがって、テーブルに値を挿入した後、以下のクエリの出力に示すように、シーケンスは 100 から始まります。
mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | +-----+---------+ 2 rows in set (0.00 sec)
次に、ヘルプを使用して AUTO_INCRMENT 値を 90 に変更しようとすると、 ALTER TABLE クエリの場合、MySQL はクエリが正常に動作するためエラーと警告が返されませんが、テーブルに新しい値を挿入すると、MySQL は指定された AUTO_INCRMENT 値と現在のシーケンス番号を比較します。指定された AUTO_INCRMENT 値 (90) は現在のシーケンス番号 (101) より小さいため、MySQL は 102 から新しい値の蓄積を開始します。これは、次のクエリから確認できます。 -
mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90; Query OK, 2 rows affected (0.31 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Aryan'); Query OK, 1 row affected (0.08 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | | 102 | Aryan | +-----+---------+ 3 rows in set (0.00 sec)
逆に、次の場合AUTO_INCRMENT を次のように変更してみます。値が現在のシーケンス番号より大きい場合、MySQL は指定された値から開始して新しい値を蓄積します。
テーブル内で「emp1」をより明確に表示するには、AUTO_INCRMENT 値を現在のシーケンス番号よりも大きい 108 に変更します。これにより、MySQL は、指定された AUTO_INCRMENT 値から新しく挿入された値の蓄積を開始します (つまり、 108から)。
えええええ以上が現在のシーケンス番号より小さい AUTO_INCRMENT 値を変更すると、MySQL は何を返しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。