Vinzenz Mai: Relationales INSERT

Beitrag lesen

Hallo

Habe aber nun leider damit mit LAST_INSERT_ID() ein Problem. Sie gibt mir 0 zurück.

INSERT INTO A ( id ) VALUES ( NULL );
SELECT LAST_INSERT_ID( );

  
Laut MySQL-Handbuch sollte dieses INSERT fehlschlagen.  
<http://dev.mysql.com/doc/refman/4.1/en/insert.html>, schau Dir den Abschnitt zu  
  
    Inserting NULL into a column that has been declared NOT NULL  
  
an. Praxistests haben allerdings ergeben, dass der Datensatz dennoch angelegt wird. Es ist natürlich eine fürchterlich schlechte Praxis, für diesen Wert, den Du nicht kennst den speziellen Wert NULL anzugeben.  
  
a) Lass die Spalte einfach weg, es wird der Defaultwert genommen  
b) MySQL 4.1 und höher vorausgesetzt: Verwende DEFAULT statt NULL.  
  

> Das ist die Tabelle A:  
>   
> ~~~sql
  

> CREATE TABLE `A` (  
>   `id` int(11) unsigned NOT NULL auto_increment,  
>   ...,  
>   PRIMARY KEY  (`id`),  
>   KEY `pid` (`pid`,`email`)  
> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11141;

Freundliche Grüße

Vinzenz