2010-06-24 19 views
16

Tengo una mesa de inicio de sesión. Tiene el rango de campos, nombre de usuario y contraseña.¿Cómo auto-incrementar en PostgreSQL?

Quiero que el valor del campo de rango aumente automáticamente con respecto a la adición de nombre de usuario y contraseña.

¿Cómo hago esto en PostgreSQL?

+2

Por cierto, usted tiene un pequeño error de tipeo en su pregunta. Es incremento no aumento. Si lo cambia, más personas encontrarán esta pregunta, además las preguntas relacionadas serán más apropiadas. – pyrocumulus

+0

Esto es sobre una tabla existente, mientras que la otra pregunta es más sobre tablas nuevas IMO. Entonces no es realmente un duplicado, a menos que los combines. – DanMan

Respuesta

31

Se puede crear una secuencia que incrementará automáticamente el valor de la columna de rango.

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

Está buscando una columna con el tipo de datos Serial. Consulte this page (abajo) para obtener más información sobre ese tipo de datos.

Así, por ejemplo, su definición de la tabla podría tener este aspecto:

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

@Milen A. Radev, gracias por agregar ese ancla a mi enlace :) – pyrocumulus

+1

El autoincremento funciona así: 'insertar en yourtable (nombre de usuario, contraseña) valores ('moobars', 'boobars');' Entonces la base de datos autoincrementa el columna de rango –

+3

SERIAL no es un tipo de datos, solo un alias para un entero con una secuencia como predeterminada (ver la respuesta de Sanjay Kumar) – leonbloy

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

tipo de datos de serie es lo que quiere.