ホームページ  >  記事  >  データベース  >  現在のシーケンス番号より小さい AUTO_INCRMENT 値を変更すると、MySQL は何を返しますか?

現在のシーケンス番号より小さい AUTO_INCRMENT 値を変更すると、MySQL は何を返しますか?

PHPz
PHPz転載
2023-09-03 20:57:03702ブラウズ

当我们更改小于当前序列号的 AUTO_INCRMENT 值时,MySQL 返回什么?

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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。