Kann ein primary key leer? Wenn ja, warum ist das alter die Ursache dieses Ergebnis?

Ich habe die folgende Tabelle:

mysql> DESC my_contacts;  
+----------+-------------+------+-----+---------+-------+  
| Field    | Type        | Null | Key | Default | Extra |  
+----------+-------------+------+-----+---------+-------+  
| id       | varchar(20) | NO   | PRI |         |       |  
| location | varchar(20) | YES  |     | NULL    |       |  
| city     | varchar(20) | YES  |     | NULL    |       |  
| state    | varchar(2)  | YES  |     | NULL    |       |  
+----------+-------------+------+-----+---------+-------+  
4 rows in set (0.01 sec)   

Wenn ich ein select alles, was ich bekomme:

mysql> SELECT * FROM my_contacts;  
+----+--------------+------+-------+  
| id | location     | city | state |  
+----+--------------+------+-------+  
| 1  | Chester,NJ   | NULL | NULL  |  
| 2  | Katy,TX      | NULL | NULL  |  
| 3  | San Mateo,CA | NULL | NULL  |  
+----+--------------+------+-------+  
3 rows in set (0.00 sec)  

Ich den folgenden Befehl ausführen:

INSERT INTO my_contacts (city,state)  
VALUES  
(SUBSTRING_INDEX(location,',',1),RIGHT(location,2));  

Mein Zweck war, zum Auffüllen der Spalten city und state mit dem Teil vor dem Komma und der Teil nach dem Komma aus der location Spalte.

Aber Folgendes passiert auf meinem Tisch:

mysql> INSERT INTO my_contacts (city,state)  
    -> VALUES  
    -> (SUBSTRING_INDEX(location,',',1),RIGHT(location,2));  
Query OK, 1 row affected (0.02 sec)   

mysql> SELECT * FROM my_contacts;  
+----+--------------+------+-------+  
| id | location     | city | state |  
+----+--------------+------+-------+  
|    | NULL         | NULL | NULL  |  
| 1  | Chester,NJ   | NULL | NULL  |  
| 2  | Katy,TX      | NULL | NULL  |  
| 3  | San Mateo,CA | NULL | NULL  |  
+----+--------------+------+-------+  
4 rows in set (0.00 sec)  

Bekomme ich einen Eintrag und der id was ist der primary key ist leer. Wie ist das möglich?

Ich meine, es ist nicht NULL aber ein primary key ist, sollte eigentlich nicht leer sein, entweder richtig?

InformationsquelleAutor Cratylus | 2013-03-31
Schreibe einen Kommentar