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

MySQLでは、AUTO_INCREMENTがPRIMARY KEYよりも優先されているとどのように言えますか?


これは、NULL値がAUTO_INCREMENT列に挿入され、MySQLが新しいシーケンス番号を提供する例の助けを借りて理解できます。

mysql> Create table employeeinfo(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, Name Varchar(10));
Query OK, 0 rows affected (0.16 sec)

mysql> Insert into employeeinfo(id, Name) values(NULL, 'Saurabh');
Query OK, 1 row affected (0.07 sec)

mysql> Select * from employeeinfo;
+----+---------+
| id | Name    |
+----+---------+
| 1  | Saurabh |
+----+---------+
1 row in set (0.00 sec)

上記の例からわかるように、列「id」はNOT NULLと宣言されており、PRIMARYKEYビットもNULL値を受け入れます。これは、列「id」もAUTO_INCREMENTとして宣言されているためです。このため、MySQLは、その列にNULL値を挿入してもシーケンス番号を返します。

対照的に、PRIMARY KEYと宣言されているがAUTO_INCREMENTではないと宣言されている列にNULLを挿入しようとすると、MySQLは次のようなエラーを返します-

mysql> create table people(id INT primary key, name varchar(10));
Query OK, 0 rows affected (0.18 sec)

mysql> Insert into people(id, name) values(NULL, 'Rahul');
ERROR 1048 (23000): Column 'id' cannot be null

したがって、AUTO_INCREMENTプロセスはPRIMARY KEY制約のチェックよりも早く解決する必要があるため、AUTO_INCREMENTはPRIMARYKEY制約の前にあると言えます。


  1. MySQLでauto_incrementで1000から始まるINTフィールド(主キーではない)を作成するにはどうすればよいですか?

    このためには、AUTO_INCREMENTを1000に設定する必要があります- alter table yourTableName AUTO_INCREMENT = 1000; まずテーブルを作成しましょう- mysql> create table DemoTable639 (    StudentId int PRIMARY KEY,    StudentStartId int AUTO_INCREMENT,    StudentName VARCHAR(50),    INDEX(StudentStar

  2. MySQLで主キーを削除するにはどうすればよいですか?

    主キーを削除するには、最初にALTERを使用してテーブルを変更します。それで、DROPを使用して以下のようにキーをドロップします 構文 alter table yourTableName drop primary key; まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> StudentId int NOT NULL,    -> StudentName varchar(20),    -> StudentAge