Integer + DEFAULT NULL funktioniert nicht wie gewünscht

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Ich soll eine Musikdatenbank anlegen und habe dabei folgendes Problem:
    Manche Angaben wie Erscheinungsdatum oder Dauer sind nicht immer bekannt und dürfen deshalb leer gelassen werden, entsprechend habe ich NULL erlaubt (siehe Code). Wenn ich aber eine Zahlenangabe frei lasse (also einfach "" statt "1902" oder so verwende), wird mir, wenn ich mir die Tabelle in phpMyAdmin ansehe, stattdessen als Datum der Wert "0000" angegeben (beim Integerwert ist er einfach nur "0"). Wie schaffe ich es also, dass dort stattdessen einfach ein leeres Feld steht?


    Code
    CREATE TABLE IF NOT EXISTS `werk` (
      `WerkID` int(6) NOT NULL AUTO_INCREMENT,
      `Name` char(50) NOT NULL,
      `Datum` year(4) DEFAULT NULL,
      `Anlass` char(30) DEFAULT NULL,
      `Komponist` char(30) NOT NULL,
      `Dauer` int(4) DEFAULT NULL,
      PRIMARY KEY (`WerkID`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  • Entweder du läßt die Spalte einfach komplett raus, dann wird der Default-Wert verwendet, oder aber du gibst einfach explizit NULL an.


    Für SQL-Befehle nutzt man übrigens einfach den [mysql]-BBCode, der macht das dann auch schön bunt.

  • Zitat

    also einfach "" statt "1902" oder so verwende


    "" ist nicht dasselbe wie eine Datenbank null, da "" (=leerer String) ein Wert enthält, wenn auch ein Leerwert ist und daher als int zu 0 konvertiert wird, und der Default ignoriert wird. Lange Rede kurzer Sinn, das entsprechende Feld beim insert einfach komplett ignorieren, dann bekommt es deinen defaultwert.