Hallo,
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| kdnr | int(11) | NO | PRI | NULL | auto_increment |Ein Feld, das keine NULL-Werte erlaubt kann kein NULL als Default-Wert haben. Diese Tabelle schwindelt.
Ich verstehe nicht, wie man Tabellen sonst anlegen soll/kann. Bei create table habe ich mal alle NULL weggenommen, aber dennoch wird so eine gleichwertige Tabelle erzeugt:
CREATE TABLE Kunde
(kdnr INTEGER NOT NULL AUTO_INCREMENT,
b_id INTEGER NOT NULL,
status_id INTEGER NOT NULL,
plz INTEGER NOT NULL,
kundenname VARCHAR(100) NOT NULL,
betriebsname VARCHAR(100),
k_strasse VARCHAR(100) NOT NULL,
k_telefon VARCHAR(20),
k_email VARCHAR(70),
k_fax VARCHAR(30),
k_website VARCHAR(200),
k_checksum VARCHAR(255) NOT NULL,
PRIMARY KEY (kdnr)
) ENGINE=INNODB;
...einen Datensatz einfüge, indem k_checksum absichtlich nicht vorkommt, kann dieser Datensatz trotzdem gespeichert werden? Wieso?
Der Defaultwert der tatsächlich aktiv ist, wird eingefügt.
Da der Defaultwert ja NULL ist, wie kann er dann in ein Feld, das NOT NULL ist, eingefügt werden?
Query OK, 1 row affected, 1 warning (0.00 sec)
Der Datensatz wird also eingefügt. Darüberhinaus frage ich mich, wo ich diese "warning" sehen kann?
SHOW WARNINGS wäre eine Möglichkeit.
Ok, der Sinn der Meldung mit der o.g. create-table-Syntax ist mir auch nicht wirklich klar:
+---------+------+-------------------------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------------------------+
| Warning | 1364 | Field 'k_checksum' doesn't have a default value |
+---------+------+-------------------------------------------------+
Somit ist die Verwirrung komplett. Ich habe angeblich keine Default-Values, diese werden jedoch bei "show fields" angezeigt und Datensätze darf ich darüberhinaus auch noch einfügen. Muss ich das jetzt verstehen? :)
Markus