INSERT INTO foo VALUES(0,...

INSERT INTO foo VALUES(0,...

am 13.05.2007 12:12:03 von Joachim Zobel

Hi.

Ich habe festgestellt, das beim INSERT von 0 in ein Primary Key
auto_increment Feld nicht 0 eingefügt wird, sondern anscheinend ein
auto_increment Wert. Gibt es Dokumentation darüber, wie sich ein INSERT
von 0 verhält oder befinde ich mich im Bereich undefinierten Verhaltens.

Gruß,
Joachim

Re: INSERT INTO foo VALUES(0,...

am 13.05.2007 12:51:50 von Claus Reibenstein

Joachim Zobel schrieb:

> Ich habe festgestellt, das beim INSERT von 0 in ein Primary Key
> auto_increment Feld nicht 0 eingefügt wird, sondern anscheinend ein
> auto_increment Wert.

Warum heißt das Feld wohl AUTO_INCREMENT? Einfach deshalb, weil man dort
keine Werte einfügt, sondern dies der Datenbank überlässt. Lediglich
beim Einspielen eines Backups oder bei der Replikation einer Datenbank
macht es Sinn, dort eigene Werte einzufügen.

Wenn Dir dieser Automatismus nicht passt und Du selber den Wert
bestimmen willst, solltest Du AUTO_INCREMENT einfach nicht benutzen.

> Gibt es Dokumentation darüber, wie sich ein INSERT
> von 0 verhält oder befinde ich mich im Bereich undefinierten Verhaltens.



Gruß. Claus

Re: INSERT INTO foo VALUES(0,...

am 13.05.2007 12:57:31 von Dominik Echterbruch

Joachim Zobel schrieb:
>
> Ich habe festgestellt, das beim INSERT von 0 in ein Primary Key
> auto_increment Feld nicht 0 eingefügt wird, sondern anscheinend ein
> auto_increment Wert. Gibt es Dokumentation darüber, wie sich ein INSERT
> von 0 verhält oder befinde ich mich im Bereich undefinierten Verhaltens.

Es ist nicht nur ganz klar definiert, sondern auch ausführlich
dokumentiert [1]. Gefunden, indem ich in der Doku mal eben nach
auto_increment gesucht habe und etwa 5 Zeilen Text gelesen habe. Wir
lernen: Lesen bildet ;)

[1] http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html
Stichwort NO_AUTO_VALUE_ON_ZERO

Grüße,
Dominik

Re: INSERT INTO foo VALUES(0,...

am 13.05.2007 14:17:32 von Joachim Zobel

Am Sonntag, den 13.05.2007, 12:57 +0200 schrieb Dominik Echterbruch:

> Es ist nicht nur ganz klar definiert, sondern auch ausführlich=20
> dokumentiert [1]. Gefunden, indem ich in der Doku mal eben nach=20
> auto_increment gesucht habe und etwa 5 Zeilen Text gelesen habe. Wir=20
> lernen: Lesen bildet ;)

Ach, wenn es so einfach wäre ... Ich kannte tatsächlich das Stück
Dokumentation, weil ich zuerst wissen wollte wie ich das Abschalten
kann. Die Frage, ob dises Verhalten dokumentiert ist, kam später, und
dann habe ich besagtes Stück Doku nicht noch einmal gelesen, weil ich es
zu kennen glaubte.

Thx,
Joachim