# Primary key automatisch hochzählen



## Gast (17. Dez 2008)

Hallo,

wenn ich eine Tabelle so erzeuge:

CREATE TABLE Test1(id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(30));

und dann ein INSERT in diese Tabelle mache:

INSERT INTO Test1 VALUES(1, 'TestName1');

wie kann ich es dann machen, dass ich den Primary key nicht angeben muss sondern das dieser automatisch hochzählt,
wie kann ich das mit dem INSERT machen, im INSERT muss ich ja immer alle Spalten angeben, oder?

Vielen Dank,
lg


----------



## Ebenius (17. Dez 2008)

Welches DBMS?



			
				Gast hat gesagt.:
			
		

> CREATE TABLE Test1(id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(30));
> [...]
> INSERT INTO Test1 VALUES(1, 'TestName1');



Ich bin nicht der DB-Profi, hab nur ein bisschen Ahnung von Oracle. Ich _nehme also nur an_ dies hier geht auf allen SQL-DBs:

```
INSERT INTO Test1 (id) VALUES (1);
```

Allerdings nur, für Spalten != null.

Bei Oracle legt man eine Sequence an (z. B. "Test1_id") und füllt dann die Tabelle mit:
	
	
	
	





```
INSERT INTO Test1 (id) VALUES (Test_id.nextval);
```

Bei anderen DBMS' geht das mit Sicherheit auch (irgendwie anders). 

Gruß, Ebenius


----------



## Guest (17. Dez 2008)

ich hätte das "irgendwie anders" benötigt aber danke für die Hilfe,
Vielleicht weiß das ja noch jemand?

schönen Abend noch,


----------



## Ebenius (17. Dez 2008)

Ebenius hat gesagt.:
			
		

> Welches DBMS?


Es würde sehr helfen, wenn Du schreiben würdes, mit welchem Datenbanksystem Du arbeitest:


```
SELECT dbms_name FROM crystal_ball;
```

Ebenius


----------



## Guest (17. Dez 2008)

Hallo,

wie wär es mit 



```
INTEGER NOT NULL AUTO_INCREMENT,
```

Gruß Michael


----------



## FenchelT (17. Dez 2008)

Es ist wie Ebenius bereits sagte.
Ohne Angabe des DBMS ist alles nur reine Spekulation.


----------



## Guest (17. Dez 2008)

Oracle oder Firebird!!!
vielen Dank


----------



## gorgel (18. Dez 2008)

Also beim Firebird muss man die Spalte einfach nur "id" nennen, als Integer deklarieren und natürlich als not null.
Von Oracle habe ich keine Ahnung. :wink:


----------



## Eminent (18. Dez 2008)

gorgel hat gesagt.:
			
		

> Also beim Firebird muss man die Spalte einfach nur "id" nennen, als Integer deklarieren und natürlich als not null.
> Von Oracle habe ich keine Ahnung. :wink:



Bei Oracle muss mann (wie Ebenius schon sagte) eine Sequenz erzeugen, die zählt sich dann ggf. selber hoch. Wie man das genau machen muss kann ich aus dem Stehgreif nicht sagen und müsste auch erst nachlesen (ist schon zu lange her, dass ich das das letzte mal gemacht habe).


----------



## FenchelT (18. Dez 2008)

Für Oracle kannst Du mal hier vorbei gucken:

http://www.webmasters.org/forum/gen...2-how-create-auto-increment-field-oracle.html


----------

