2015-03-23 6 views
9

Próbuję utworzyć tabelę z kolumną auto-inkrementacji, jak poniżej. Od Redshift psql nie obsługuje Serial, musiałem użyć IDENTITY data type:Redshift psql auto increment na parzystą liczbę

tożsamości (nasion, krok)
klauzulę, która określa, że ​​kolumna jest kolumną tożsamości. Kolumna IDENTYFIKACJA zawiera unikalne wartości generowane automatycznie. Wartości te rozpoczynają się od wartości określonej jako seed i inkrementacji o liczbę określoną jako step. Typ danych dla kolumny tożsamości musi być albo INT lub BIGINT.`

Moja create table wygląda następująco:

CREATE TABLE my_table(
     id INT IDENTITY(1,1), 
     name CHARACTER VARYING(255) NOT NULL, 
     PRIMARY KEY(id) 
); 

Jednak, kiedy próbował wstawić dane do my_table, zwiększamy tylko wiersze o parzystej liczbie, jak poniżej:

id | name | 
----+------+ 
    2 | anna | 
    4 | tom | 
    6 | adam | 
    8 | bob | 
10 | rob | 

moich wypowiedzi wkładki wyglądają jak poniżej:

INSERT INTO my_table (name) 
VALUES ('anna'), ('tom') , ('adam') , ('bob') , ('rob'); 

Mam również problem z przywróceniem kolumny id, aby rozpocząć od 1. Istnieją rozwiązania dla typu danych SERIAL, ale nie widziałem żadnej dokumentacji dla IDENTITY. Wszelkie sugestie będą mile widziane!

+0

dziwne. Wypróbowałem twój kod i nie widzę problemu. Identyfikatory są 1-5. – Anthony

+0

Mam ten sam problem podczas ładowania pliku csv z s3 do redshift. –

+3

Dla przypomnienia mam ten sam problem. Dziwne, jak to nie jest spójne. (Zrobiłem TOŻSAMOŚĆ (0,1), jak powiedział Jorge poniżej, ale drugi powinien być wszystkim, co ma znaczenie: Zastanawiam się, czy jest to błąd regionalny? Jestem na nas-west-2 (Oregon) – Cognitio

Odpowiedz

0

Ustaw wartość seed na 1 i swoją wartość step na 1.

Utwórz tabelę

CREATE table my_table(
    id bigint identity(1, 1), 
    name varchar(100), 
    primary key(id)); 

wstawić wiersze

INSERT INTO organization (name) 
VALUES ('anna'), ('tom') , ('adam'), ('bob'), ('rob'); 

Wyniki

id | name | 
----+------+ 
    1 | anna | 
    2 | tom | 
    3 | adam | 
    4 | bob | 
    5 | rob | 

Z jakiegoś powodu, jeśli ustaw wartość seed na 0 i swoją wartość step na 1, wtedy liczba całkowita wzrośnie stopniowo o 2.

Utwórz tabelę

CREATE table my_table(
    id bigint identity(0, 1), 
    name varchar(100), 
    primary key(id)); 

wstawić wiersze

INSERT INTO organization (name) 
VALUES ('anna'), ('tom') , ('adam'), ('bob'), ('rob'); 

Rezultaty

id | name | 
----+------+ 
    0 | anna | 
    2 | tom | 
    4 | adam | 
    6 | bob | 
    8 | rob |