2010-06-24 17 views
16

Mam stół Zaloguj się. Ma rangę pola, nazwę użytkownika i hasło.Jak automatycznie zwiększyć w PostgreSQL?

Chcę, aby wartość pola rangowego była automatycznie zwiększana w odniesieniu do dodania nazwy użytkownika i hasła.

Jak to zrobić w PostgreSQL?

+2

Btw, masz mały błąd pisania w swoim pytaniu. To nie wzrost inkrementacji. Jeśli ją zmienisz, więcej osób znajdzie to pytanie, a odpowiednie pytania będą bardziej odpowiednie. – pyrocumulus

+0

To dotyczy istniejącej tabeli, podczas gdy inne pytanie dotyczy bardziej nowych tabel IMO. Więc to nie jest duplikat, chyba że je scalisz. – DanMan

Odpowiedz

31

Można utworzyć sekwencję, która automatycznie zwiększy wartość kolumny rangi.

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

Szukasz kolumny o typie danych Serial. Zobacz this page (dół), aby uzyskać więcej informacji o tym typie danych.

Tak na przykład, definicja tabela może wyglądać tak:

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

@Milen A. Radev, dziękuję za dodanie tej kotwicy do mojego linku :) – pyrocumulus

+1

Autoinkrecja działa w następujący sposób: 'wstaw wartości do twoich tabel (nazwa użytkownika, hasło) ('moobary', 'boobars');' Następnie baza danych automatycznie dostosowuje kolumna rank. –

+3

SERIAL nie jest typem danych, tylko aliasem dla liczby całkowitej z sekwencją domyślną (patrz Asjawer Sanjay Kumar) – leonbloy

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

seryjny typ danych jest to, co chcesz.

Powiązane problemy