2012-04-11 9 views
7

मैंने तालिका में कुछ पंक्तियों को मैन्युअल रूप से जोड़ा और मैंने आईडी (auto_increment) मैन्युअल रूप से सेट अप किया। अब जब मैं अपने ऐप के माध्यम से डीबी टेबल में डीबी टेबल में नई पंक्ति जोड़ने की कोशिश करता हूं, तो मुझे त्रुटि मिल रही है, कि बनाया गया आईडी मान पहले से मौजूद है।PostgresSQL - मैन्युअल रूप से auto_increment के अगले मान को कैसे सेट अप करें?

मैं मैन्युअल रूप से अगले आईडी मान कैसे सेट कर सकता हूं (उदाहरण के लिए, तालिका में मुझे आईडी है, तो PostgreSQL को कैसे बताना है, कि अगली आईडी संख्या 3 के बाद गिना जाना चाहिए)?

उत्तर

16

http://www.postgresql.org/docs/9.1/static/functions-sequence.html

select setval('sequence-name', <new-value>); 

आप तालिका परिभाषा से अनुक्रम नाम प्राप्त कर सकते हैं:

id  | integer    | not null default nextval('id_seq'::regclass) 

इस मामले अनुक्रम @ करने के लिए 'id_seq'

संपादित करें (10x का नाम है में ग्लेन):

SELECT setval('id_seq', max(id)) FROM table; 
+1

और चुनें मैक्स (आईडी) +1 MyTable से के परिणाम के निर्धारित किया है। – Glenn

2

मुझे लगता है कि वहाँ एक आसान तरीका है:

ALTER SEQUENCE "seq_product_id" RESTART WITH 10 
संबंधित मुद्दे