2011-04-06 14 views
8

के न्यूनतम परिवर्तन को बदलना मैं मौजूदा अनुक्रम का न्यूनतम मान बदलने की कोशिश कर रहा हूं।पोस्टग्रेस के अनुक्रम

सबसे पहले मैं

ALTER SEQUENCE product_id_seq MINVALUE 10000; 

की कोशिश की और मैं ERROR: START value (1) cannot be less than MINVALUE (10000) मिला है।

तो मैं

ALTER SEQUENCE product_id_seq MINVALUE 10000 RESTART WITH 10000; 

की कोशिश की, लेकिन एक ही त्रुटि मिली।

बेशक मैं इसे छोड़ सकता हूं और एक नया बना सकता हूं, लेकिन मुझे लगता है कि ऐसा करने का एक तरीका होना चाहिए। मैं पोस्टग्रेस 8.4.7 का उपयोग कर रहा हूं।

उत्तर

7

एक ही बार में them all स्थापना के बारे में कैसे: 10000

ALTER SEQUENCE product_id_seq 
MINVALUE 10000 
START 10000 
RESTART 10000; 

कि न्यूनतम बदलना चाहिए, शुरू करने, और मौजूदा सभी मूल्यों और इस तरह सब कुछ सुसंगत बनाने के।

+0

का उपयोग कर सकते हैं। मुझे नहीं पता कि मैं उस पैरामीटर को कैसे चूक गया। =) – dasony

+1

@ डैनी: संभावित रूप से 'रीस्टार्ट' के अजीब नामकरण ने कुछ भ्रम पैदा किया, मुझे उम्मीद थी कि इसे 'वर्तमान' कहा जाएगा। –

0

मैंने निम्नलिखित परीक्षण किया है, मेरा संस्करण 9.0 है।

--create sequence 
skytf=> CREATE SEQUENCE seq_test 
skytf->  START WITH 1 
skytf->  INCREMENT BY 1 
skytf->  NO MINVALUE 
skytf->  NO MAXVALUE 
skytf->  CACHE 1; 
CREATE SEQUENCE 

skytf=> \d seq_test 
      Sequence "skytf.seq_test" 
    Column  | Type |  Value   
---------------+---------+--------------------- 
sequence_name | name | seq_test 
last_value | bigint | 1 
start_value | bigint | 1 
increment_by | bigint | 1 
max_value  | bigint | 9223372036854775807 
min_value  | bigint | 1 
cache_value | bigint | 1 
log_cnt  | bigint | 1 
is_cycled  | boolean | f 
is_called  | boolean | f 


skytf=> select nextval('seq_test'); 
nextval 
--------- 
     1 
(1 row) 

--alter sequence 
skytf=> alter sequence seq_test restart with 100; 
ALTER SEQUENCE 
skytf=> \d seq_test 
      Sequence "skytf.seq_test" 
    Column  | Type |  Value   
---------------+---------+--------------------- 
sequence_name | name | seq_test 
last_value | bigint | 100 
start_value | bigint | 1 
increment_by | bigint | 1 
max_value  | bigint | 9223372036854775807 
min_value  | bigint | 1 
cache_value | bigint | 1 
log_cnt  | bigint | 1 
is_cycled  | boolean | f 
is_called  | boolean | f 

skytf=> select nextval('seq_test'); 
nextval 
--------- 
    100 
(1 row) 
1

PostgreSQL में कई functions that operate on sequences हैं। यहां अन्य मार्गदर्शन के अलावा, आप

SELECT setval('product_id_seq ', 10000); -- Next nextval() returns 10001 
संबंधित मुद्दे