2015-03-23 8 views
9

पर मैं नीचे एक ऑटो-वृद्धि कॉलम के साथ एक टेबल बनाने की कोशिश कर रहा हूं। चूंकि Redshift psql धारावाहिक का समर्थन नहीं करता, मैं IDENTITY data type का इस्तेमाल किया था:Redshift psql ऑटो वृद्धि भी

पहचान (बीज, कदम)
खण्ड कि निर्दिष्ट करता है कि स्तंभ एक पहचान स्तंभ है। एक पहचान कॉलम में अद्वितीय ऑटो-जनरेटेड मान होते हैं। ये मान बीज के रूप में निर्दिष्ट मूल्य और चरण के रूप में निर्दिष्ट संख्या से वृद्धि के साथ शुरू होते हैं। एक पहचान स्तंभ के लिए डेटा प्रकार होना चाहिए या तो INT या BIGINT.`

अपनी तालिका बयान बनाने के इस तरह दिखता है:

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

हालांकि, जब मैं my_table में डेटा सम्मिलित करने की कोशिश की, पंक्तियों केवल तब ही बढ़ेगी यहां तक ​​कि नंबर पर, नीचे की तरह:

:

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

मेरे डालने बयान नीचे की तरह लग रहे

मुझे आईडी कॉलम को वापस शुरू करने में भी समस्या आ रही है। SERIAL डेटा प्रकार के लिए समाधान हैं, लेकिन मैंने IDENTITY के लिए कोई दस्तावेज़ नहीं देखा है। किसी भी सुझाव की सराहना की जाएगी!

+0

अजीब बनाएँ। मैंने आपके कोड की कोशिश की और समस्या को नहीं देखा। आईडी 1-5 हैं। – Anthony

+0

मुझे सीएसवी फ़ाइल को एस 3 से रेडशिफ्ट लोड करते समय एक ही समस्या है। –

+3

रिकॉर्ड के लिए, मुझे एक ही समस्या है। अजीब कैसे यह संगत नहीं है। (मैंने पहचान (0,1) की थी क्योंकि जॉर्ज ने नीचे कहा था, लेकिन दूसरा वाला 1 होना महत्वपूर्ण है। मुझे आश्चर्य है कि क्या यह एक क्षेत्रीय बग है? मैं हमारे-पश्चिम -2 (ओरेगन) – Cognitio

उत्तर

4

आप इस प्रकार अपनी पहचान स्थापित करने के लिए:

id INT IDENTITY(0,1) 

स्रोत: http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_examples.html

और तुम को 0 पर आईडी रीसेट नहीं कर सकते आप तालिका ड्रॉप और इसे वापस फिर से बनाना पड़ेगा ।

0

1 पर 0 और step मान 1 पर सेट करें।

तालिका बनाएं

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

सम्मिलित पंक्तियों

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

परिणाम

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

किसी कारण के लिए, आप अगर seed पर 0 और step मान 1 पर मान करें तो पूर्णांक 2 के चरणों में बढ़ेगा।

तालिका

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

सम्मिलित पंक्तियों

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

परिणाम

id | name | 
----+------+ 
    0 | anna | 
    2 | tom | 
    4 | adam | 
    6 | bob | 
    8 | rob | 
संबंधित मुद्दे