2010-06-24 8 views
16

Ich habe eine Tabelle Login. Es hat die Felder Rang, Benutzername und Passwort.Wie automatisch in PostgreSQL inkrementieren?

Ich möchte, dass der Rangfeldwert automatisch erhöht wird, wenn Benutzername und Kennwort hinzugefügt werden.

Wie mache ich das in PostgreSQL?

+2

Btw, Sie haben einen kleinen Tippfehler in Ihrer Frage. Es wird nicht erhöht. Wenn Sie es ändern, werden mehr Personen diese Frage finden, und die zugehörigen Fragen werden angemessener sein. – pyrocumulus

+0

Dies ist über eine vorhandene Tabelle, während die andere Frage mehr über neue Tabellen IMO ist. Es handelt sich also nicht wirklich um ein Duplikat, es sei denn, Sie fügen sie zusammen. – DanMan

Antwort

31

Eine Sequenz kann erstellt werden, die automatisch den Wert der Rangspalte erhöht.

CREATE SEQUENCE rank_id_seq; 

CREATE TABLE yourtable (
    rank INTEGER NOT NULL default nextval('rank_id_seq'), 
    username VARCHAR(20) NOT NULL, 
    password VARCHAR(50) NOT NULL 
); 

ALTER SEQUENCE rank_id_seq owned by yourtable.rank; 
44

Sie suchen nach einer Spalte mit dem Datentyp Serial. Weitere Informationen zu diesem Datentyp finden Sie unter this page (unten).

So könnte zum Beispiel Ihre Tabellendefinition wie folgt aussehen:

CREATE TABLE yourtable (
    rank SERIAL NOT NULL, 
    username VARCHAR(20) NOT NULL, 
    password VARCHAR(50) NOT NULL 
); 
+0

@Milen A. Radev, danke für das Hinzufügen dieses Ankers zu meinem Link :) – pyrocumulus

+1

Das Autoinkrement funktioniert wie folgt: 'Einfügen in yourtable (Benutzername, Passwort) Werte ('moobars', 'boobars');' Dann autoincrements die Datenbank Rang Spalte. –

+3

SERIAL ist kein Datentyp, nur ein Alias ​​für eine ganze Zahl mit einer Sequenz als Standard (siehe Sanjay Kumar's asnwer) – leonbloy

4
create table login (rank serial, username varchar(20), password varchar(20)) 

Seriendatentyp ist, was Sie wollen.

Verwandte Themen