MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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


MySQL列でAUTO_INCREMENTを使用すると、シーケンス番号は常にデフォルト値1または指定した値から昇順で増加します。

これが理由で、MySQLはAUTO_INCREMENT値を現在のシーケンス番号よりも小さい値に変更することを許可していません。次の例の助けを借りて理解することができます-

この例では、「emp1」という名前のテーブルがあり、テーブルの作成中にAUTO_INCREMENT VALUEを100に指定するとします。したがって、テーブルに値を挿入した後、シーケンスは100から開始します。次のクエリの出力から見た-

mysql> Select * from emp1;
+-----+---------+
| id | NAME     |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
+-----+---------+
2 rows in set (0.00 sec)

ALTER TABLEクエリを使用してAUTO_INCREMENT値を90に変更しようとすると、クエリは正常であるため、MySQLはエラーと警告を返しませんが、テーブルに新しい値を挿入すると、MySQLは指定された値を比較します現在のシーケンス番号を持つAUTO_INCREMENT値。指定されたAUTO_INCREMENT値(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_INCREMENTを現在のシーケンス番号よりも大きい値に変更しようとすると、MySQLは指定された値から新しい値の蓄積を開始します。

テーブル「emp1」でより明確にするために、AUTO_INCREMENT値を現在のシーケンス番号よりも大きい108に変更します。したがって、MySQLは、指定されたAUTO_INCREMENT値から、つまり108以降に新しく挿入された値の蓄積を開始します。

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 108;
Query OK, 3 rows affected (0.30 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> Insert into emp1(name) values('Daksh');
Query OK, 1 row affected (0.04 sec)

mysql> Insert into emp1(name) values('Yashraj');
Query OK, 1 row affected (0.06 sec)

mysql> Select * from emp1;
+-----+---------+
| id  | NAME    |
+-----+---------+
| 100 | Sohan   |
| 101 | Harshit |
| 102 | Aryan   |
| 108 | Daksh   |
| 109 | Yashraj |
+-----+---------+
5 rows in set (0.00 sec)

  1. AdmissionDateがMySQLの現在の日付よりも小さい場合の日付を比較します

    まずテーブルを作成しましょう- mysql> create table DemoTable (    AdmissionDate varchar(50) ); Query OK, 0 rows affected (0.63 sec) 注 −現在の日付が2019年9月14日だとします。 挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。以下はクエリです- mysql> insert into DemoTable values('15-Sep-2019'); Query OK, 1 row affected (0.19 sec)

  2. MySQLで現在の日付よりも短い日付を選択するにはどうすればよいですか?

    まずテーブルを作成しましょう- mysql> create table DemoTable1877 ( DueDate datetime ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1877 values('2019-12-10'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1877 values