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制約の前にあると言えます。
-
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
-
MySQLで主キーを削除するにはどうすればよいですか?
主キーを削除するには、最初にALTERを使用してテーブルを変更します。それで、DROPを使用して以下のようにキーをドロップします 構文 alter table yourTableName drop primary key; まずテーブルを作成しましょう- mysql> create table DemoTable -> ( -> StudentId int NOT NULL, -> StudentName varchar(20), -> StudentAge