Hallo!
Es gibt eine Tybelle "test" mit einer TIMESTAMP-Spalte "datetimecreated", deren Werte nicht NULL sein dürfen:
Code:
CREATE TABLE IF NOT EXISTS `test` (
`id` INT NOT NULL AUTO_INCREMENT ,
`label` VARCHAR(100) NULL ,
`description` VARCHAR(1000) NULL ,
`datetimecreated` TIMESTAMP NOT NULL ,
`datetimelastupdate` TIMESTAMP NULL ,
`datetimedeleted` TIMESTAMP NULL ,
`status` VARCHAR(10) NOT NULL ,
`numupdates` INT NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;
Wider Erwarten macht MySQL aus dem Code oben keine NOT-NULL-Spalte, sondern eine NULL-Spalte mit einem DEFAULT-Wert "CURRENT_TIMESTAMP":
Code:
mysql> DESC test;
+--------------------+---------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+---------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| label | varchar(100) | YES | | NULL | |
| description | varchar(1000) | YES | | NULL | |
| datetimecreated | timestamp | YES | | CURRENT_TIMESTAMP | |
| datetimelastupdate | timestamp | YES | | NULL | |
| datetimedeleted | timestamp | YES | | NULL | |
| status | varchar(10) | NO | | NULL | |
| numupdates | int(11) | NO | | 0 | |
+--------------------+---------------+------+-----+-------------------+----------------+
Hat jemand eine Idee, warum das DBMS das macht? Und wie kann man eine TIMESTAMP-Spalte auf NOT NULL setzen, und zwar ohne Default-Wert?
Danke