2012-01-05 32 views
58

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

ERROR: function setval(unknown) does not exist

ALTER SEQUENCE का उपयोग या तो काम करने के लिए प्रतीत नहीं होता:

SELECT setval('payments_id_seq'), 21, true 

यह एक त्रुटि देता है?

ALTER SEQUENCE payments_id_seq LASTVALUE 22 

यह कैसे किया जा सकता है?

रेफरी: http://www.postgresql.org/docs/7.4/interactive/functions-sequence.html

+3

ऐसा प्रतीत होता है कि 'सेटवल()' में कम से कम दो तर्क हैं। –

उत्तर

64

कोष्ठक रख दिए जाते हैं:

setval('payments_id_seq', 21, true) 

नहीं तो आप एक भी तर्क के साथ setval कॉल कर रहे हैं, जबकि यह दो या तीन की आवश्यकता है।

+0

आप सही हैं, धन्यवाद – stef

+1

अंतिम तर्क "सत्य" का अर्थ क्या है? – inafalcao

+1

'true' का अर्थ है कि अगला मान + 1 प्रदान किया गया नंबर होगा, इस मामले में 22. 'झूठा' का अर्थ है कि अगला मान प्रदान किया गया नंबर होगा, या 21. डिफ़ॉल्ट रूप से, सेटवल 'सत्य' जैसा व्यवहार करेगा चुना गया था। अधिक जानकारी: https://www.postgresql.org/docs/9.6/static/functions-sequence.html –

8
setval('sequence_name', sequence_value) 
97

मुझे लगता है कि आप वास्तव में निराशाजनक रूप से पुराने पोस्टग्रेएसक्यूएल संस्करण 7.4 का उपयोग नहीं कर रहे हैं और केवल गलती से मैन्युअल के इस संस्करण को संदर्भित करते हैं।


             
  
    ALTER SEQUENCE payments_id_seq LASTVALUE 22 
  

यह काम करेगा:

ALTER SEQUENCE payments_id_seq RESTART WITH 22; 

और के बराबर है:

SELECT setval('payments_id_seq', 22, FALSE); 

इस वाक्य रचना PostgreSQL के किसी भी संस्करण में मान्य नहीं है वर्तमानmanual has more


दोहराया आपरेशन के लिए आप में रुचि हो सकती:

ALTER SEQUENCE payments_id_seq START WITH 22; -- set default 
ALTER SEQUENCE payments_id_seq RESTART;  -- without value 

START [WITH] भंडार एक डिफ़ॉल्ट RESTART संख्या है, जो मूल्य के बिना बाद में RESTART कॉल के लिए प्रयोग किया जाता है। आपको अंतिम भाग के लिए पोस्टग्रेस 8.4 या बाद में आवश्यकता है।

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