Auto-Increment
patrick
- datenbank
0 Tom0 patrick0 Tom0 Andreas Korthaus
Hallo
Wie definiere ich eine Spalte als Auto-Increment
und wie wende ich das dann an, wenn ich z.B. eine neue Zeile einfügen will?
Hello,
Wie definiere ich eine Spalte als Auto-Increment
Für welche Datenbank?
und wie wende ich das dann an, wenn ich z.B. eine neue Zeile einfügen will?
Indem Du einfach einen neuen Satz einfügst. Das Feld mit dem Autoincrement-Wert wird dann von der DBE automatisch belegt, i.d.R. mit dem nächsten höheren Wert des höchsen bisher vorkommenen Wertes der Spalte, auch wenn der zugehörige Satz schon wieder gelöscht wurde.
Spannend ist immer die Frage, was an den Gerenzen des Wertebereiches passiert, und ob das Incrementverhalten vom DBMS garantiert weird.
Grüße
Tom
Indem Du einfach einen neuen Satz einfügst. Das Feld mit dem Autoincrement-Wert wird dann von der DBE automatisch belegt, i.d.R. mit dem nächsten höheren Wert des höchsen bisher vorkommenen Wertes der Spalte, auch wenn der zugehörige Satz schon wieder gelöscht wurde.
Und wie mache ich das?
Also soll ich dann einfach schreiben:
Wir haben eine Datenbank: xxx mit (id Primärschlüssel auto_increment, name Char(20),email Char(30) usw.)
INSERT INTO xxx Values(???,Name,Email...)
Was muss ich dann für id reinschreiben? Muss ich das leer lassen?
Ich benutzte mysql
Hallo,
INSERT INTO table (ID, NAME, EMAIL) Values(NULL,"Name","Email");
oder
INSERT INTO table set
NAME='$name'
EMAIL='$email';
Wobei man tunlichst vorher
$name = mysql_escape_string(stripslashes($_POST["name"]));
$email = mysql_escape_string(stripslashes($_POST["email"];
benutzen sollte, wenn die Daten aus einer externen Quelle stammen (POST) und magic_quotes_gpc=on ist.
Wenn magic_quotes_gpc=off ist, reicht mysql_escape_string().
Grüße
Tom
Hi!
Und wie mache ich das?
So wie es die Dokumentation der Datenbank beschreibt.
Wir haben eine Datenbank: xxx mit (id Primärschlüssel auto_increment, name Char(20),email Char(30) usw.)
INSERT INTO xxx Values(???,Name,Email...)
Was muss ich dann für id reinschreiben? Muss ich das leer lassen?
nix, wenn Du für eine Spalte das Attribut AUTO_INCREMENT definiert hast, wird bei jedem INSERT automatisch der bisher höchste Wert + 1 eingefügt.
Ich benutzte mysql
Aha. Dann kann ich Dir http://www.mysql.com/doc/de/index.html wärmstens empfehlen. Steht sehr viel drin!
Unter anderem findest Du da: http://www.mysql.com/doc/de/CREATE_TABLE.html, suche da mal nach "AUTO_INCREMENT".
Falls Du zufällig auch mit PHP arbeitest, siehe auch:
http://www.dclp-faq.de/q/q-mysql-auto-increment.html
http://www.dclp-faq.de/q/q-mysql-inkrement.html
http://www.dclp-faq.de/q/q-sql-ids.html
Grüße
Andreas