phpbar.de logo

Mailinglisten-Archive

Re: id
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: id



Ulrich Vogel schrieb am Dienstag, den 7. September 1999, in der
deutschen PHP-Mailingliste:
> Ich moechte in mysql Datensaetze eingeben, wobei die ID ab einem 
> bestimmten Wert startet und dann um 1 nach oben zaehlt.
[...]
> Wie und wo kann ich den Startwert angeben.

In den MySQL-Version vor 3.23.x geht es nicht direkt, sondern nur,
indem Du nach dem Anlegen der Tabelle einen Dummy-Datensatz einfügst,
der im Auto_Increment-Feld den gewünschten Startwert minus Eins
enthält:

  CREATE TABLE tmp (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    ...restliche Felder...
  );
  INSERT INTO TABLE tmp(id) VALUES (999); /* Start ab 1000 */

  Die nächste automatisch erzeugte ID wird nun 1000 sein.

Diese Methode ist meines Erachtens die beste zur Zeit.


Auch möglich wäre, daß Du beim Einfügen des ersten Datensatzes
explizit den Startwert von 1000 einträgst.
  INSERT INTO TABLE tmp VALUES (1000, ...restliche Felder...);

Oder noch ein Möglichkeit ist, direkt vor dem ersten INSERT die
nächste ID per SET vorzugeben:
  SET OPTION INSERT_ID = 1000;
  INSERT INTO TABLE tmp VALUES (NULL, ...restliche Felder...);

Die beiden letzten Möglichkeiten sind allerdings vermutlich
unhandlich, weil man dann genau aufpassen muß, wann der _erste_ INSERT
stattfindet.


Ab V3.23.x kannst Du für Tabellen im neuen MyISAM-Speicherformat den
Startwert auch schon bei CREATE angeben:
  CREATE TABLE tmp (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    ...restliche Felder...
  )
  AUTO_INCREMENT = 1000;

Das ist ab V3.23.x die perfekte Lösung.


> mysql manual schon zu Rate gezogen.

Siehe MySQL-Manual, Kapitel "7.6 CREATE TABLE syntax" und "7.24 SET
OPTION syntax", aber das ist wirklich zu dem Thema ziemlich dünn.

Ciao,
  Martin
-- 
Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ >
PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26  E4 EC 80 58 7B 31 3A D7

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive