EisFuX: Gibts seit Version 3.1

Beitrag lesen

(Hallo|Hi(ho)|Tag) Ina,

Ich beschäftige mich immer mal wieder mit sqlite um dann doch reumütig zu Mysql zurückzukehren.

Nur weil das eine Stück Software etwas nicht tun kann, was ein anderes kann, heißt das nicht, dass ersteres das schlechtere Exemplar darstellt.

Aber dann packt es mich wieder und ich nehme einen neuen Anlauf. Eines der immer wiederkehrenden Probleme ist autoincrement.

Man liest im Netz und in den Dokus und am Ende ist man so schlau als wie zuvor. Warum? Weil offensichtlich jeder eine andere Meinung dazu hat.

AUTO(_)INCREMENT ist nicht wirklich eine gute Idee. Schau dir dazu mal den Eintrag im SQLite-Wiki zu nicht unterstützten Eigenschaften anderer SQL-Dialekte an (nach "AUTO_INCREMENT" und "stop the evil from spreading" suchen).

Gibt es das Attribut: autoincrement oder AUTO_INCREMENT bei sqlite?

Nein, aber es gibt seit der Version 3.1 vom Januar 2005 als Constraint den Wert "AUTOINCREMENT", wie du in der (richtigen) Dokumentation nachlesen kannst:

column-constraint ::= NOT NULL [ conflict-clause ] |
                      PRIMARY KEY [sort-order] [ conflict-clause ] [AUTOINCREMENT] |
                      UNIQUE [ conflict-clause ] |
...

http://sqlite.org/lang_createtable.html

Laut Doku anscheinend NEIN http://sqlite.org/faq.html#q1

Keine Ahnung, warum das in den FAQ nicht berücksichtigt wird, denn anscheinend ist es ein vor allem von MySQL-Fans immer wieder gerne nachgefragtes "Feature" ... ;-)

Laut vielen Foren/Tutorials offensichtlich doch:  CREATE TABLE ABTEILUNGEN(ABT_ID integer  AUTO_INCREMENT PRIMARY KEY,

Der Autor des Scripts behauptet ja, dass er es getestet hat. Allerdings verhält sich SQLite beim Basteln von Tabellen oft sehr tolerant gegenüber unbekannten Datentypen oder Constraints -- sprich: Es ignoriert die Anweisung einfach. Außerdem findet man ja "integer" und "PRIMARY KEY" in der create-Anweisung und das reicht ja laut deinem FAQ-Link auch. Es kommt also darauf an, wie man "getestet" definiert. ;-)

Einen Punkt gibts noch zu bedenken, falls SQLite in Verbindung mit PHP eingesetzt wird: Die standardmäßig eingebaute SQLite-Extension von PHP unterstützt immer noch nur SQLite in der Version 2.8. Nur die PDO-Erweiterung kann mit SQLite 3 umgehen.

MffG
EisFuX