2011-11-03 14 views
5

लिखने के लिए मैं हाल ही में mysql से एक डेटाबेस चले गए 9.Postgresql अगले आईडी की स्थापना

लेकिन अब pgSQL को जब मैं एक नई वस्तु (Django व्यवस्थापक में) बनाने के लिए यह मुझसे कहता है कि मैं कोशिश कर रहा हूँ आईडी कोशिश उपयोग करने के लिए (एक से शुरू हुआ और हर बार मैंने कोशिश की है) पहले से ही इस्तेमाल किया जा चुका है।

मुझे लगता है कि एक सूचक या सूचकांक है जिसे अंतिम उपयोग आईडी पर सेट करने की आवश्यकता है। क्या मैं सही हूँ?

+0

आप कॉलम के प्रकार को 'धारावाहिक' पर सेट कर सकते हैं और postgreSQL स्वचालित रूप से आपके लिए एक अनुक्रम बना देगा। – Johan

+0

मुझे लगभग निश्चित है कि यह है, क्योंकि तालिका django द्वारा बनाई गई है। – demux

+0

मुझे यहां जवाब मिला: http://stackoverflow.com/questions/1709705/postgresql-nextval-generating-existing-values ​​ – demux

उत्तर

7

जब आप अपने तालिका को निर्धारित करने, PostgreSQL बराबर 'auto_increment' के लिए है:

CREATE TABLE foo (
    id SERIAL, 
    ... 
); 

तो अपनी मेज पहले से ही बनाई गई है (मुझे लगता है के रूप में यह है), तो आप इस मैन्युअल रूप से जोड़ सकते हैं:

CREATE SEQUENCE foo_id_seq; 
ALTER TABLE foo ALTER COLUMN id SET DEFAULT nextval('foo_id_seq'); 

ध्यान दें कि आप डिफ़ॉल्ट नाम है कि Pg आप अपने अनुक्रम नाम के लिए निम्न स्वरूप का उपयोग दिया होता के साथ रहना चाहते हैं:

<table name>_<column name>_seq 

इस प्रकार मेरे उदाहरण में, foo_id_seq

+0

पहले से ही एक टेबल और एक अनुक्रम डीजेंगो द्वारा बनाया गया था। तो मुझे अनुक्रम बनाने और तालिका को बदलने की ज़रूरत नहीं थी। लेकिन यह क्या काम था: सेटवल का चयन करें ('uploads_id_seq', 6965); (तालिका का नाम अपलोड होने पर) – demux

2

यदि तालिका माइग्रेट की गई थी और यह mysql ऑटो वृद्धि कॉलम को प्रतिस्थापित करने के लिए धारावाहिक का उपयोग करता है, तो आपका डेटा संभवतः सीरियल अनुक्रम को बढ़ाने के बिना माइग्रेट किया गया था। अपनी तालिका में उच्चतम मौजूदा कुंजी के ऊपर अपने मान को सेट करने के लिए postgresql setval फ़ंक्शन देखें।

+0

मैंने इसे यहां पाया: http://www.postgresql.org/docs/current/static/functions-sequence.html मैं postgresql के लिए नया हूं; क्या आप एक उदाहरण दिखा सकते हैं? – demux

+0

'चयन सेटवल (' nameOfSequence ', 42); ' – Ketema

संबंधित मुद्दे