मैं तालिका को छोटा करने के बाद गलत सीरियल आईडी प्राप्त करने के लिए अंतिम() का चयन करता हूं।अनुक्रम तालिका को छंटनी के बाद रीसेट नहीं किया जाता है
जब मैं मेज छोटा करना, मैं lastval() का उपयोग करें चुनें, मैं गलत आईडी/मिला
मैं तालिका को छोटा करने के बाद गलत सीरियल आईडी प्राप्त करने के लिए अंतिम() का चयन करता हूं।अनुक्रम तालिका को छंटनी के बाद रीसेट नहीं किया जाता है
जब मैं मेज छोटा करना, मैं lastval() का उपयोग करें चुनें, मैं गलत आईडी/मिला
आप तो अनुक्रम रीसेट करना चाहते हैं:
setval('sequence_name', 0)
विद्यमान अनुक्रम नाम मुद्दे को सूचीबद्ध करने के psql प्रॉम्प्ट पर \ds
।
प्रयास करें
TRUNCATE TABLE table_name
RESTART IDENTITY;
यह होगा
Automatically restart sequences owned by columns of the truncated table(s).
यहाँ विवरण: TRUNCATE
त्रुटि: "रीस्टार्ट" पर या उसके पास वाक्यविन्यास त्रुटि लाइन 1: तालिका उत्पाद को छोटा करें पुन: प्रारंभ करें पहचान; – user1369887
@ user1369887 आपके पास PostgreSQL का कौन सा संस्करण है? –
मेरा सर्वर संस्करण है: सर्वर 8.3.16 – user1369887
बाद अनुक्रम पुनर्स्थापित करने के लिए मानक तरीका है:
truncate table table_name restart identity;
लेकिन कुछ ver में सायन & मंच, यह सिंटेक्स त्रुटि है,
उस मामले में, आप रीसेट अनुक्रम बिना काट-छांट कर सकते हैं, और एक अन्य एसक्यूएल के साथ अनुक्रम में परिवर्तन, इस प्रयास करें:
truncate table table_name;
alter sequence seq_name start 1;
अगले
ALTER SEQUENCE sequence_name RESTART WITH 1;
नंबर 1 के साथ वापस शुरू करने के लिए अनुक्रम को रीसेट करने का सबसे अच्छा तरीका यह है कि आपने सफलतापूर्वक इसे छोटा कर दिया है:
ALTER SEQUENCE <tablename>_<id>_seq RESTART WITH 1
तो, उन तालिका के लिए उदाहरण के लिए यह होगा:
ALTER SEQUENCE users_id_seq RESTART WITH 1
इस कोड स्निपेट के लिए धन्यवाद, जो कुछ सीमित, तत्काल सहायता प्रदान कर सकता है। एक उचित स्पष्टीकरण [बहुत सुधार होगा] (// meta.stackexchange.com/q/114762) यह दिखाकर इसका दीर्घकालिक मूल्य * क्यों * यह समस्या का एक अच्छा समाधान है, और भविष्य के पाठकों के साथ इसे और अधिक उपयोगी बना देगा अन्य, समान प्रश्न। आपके द्वारा किए गए अनुमानों सहित कुछ स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें। –
वहां आप जाते हैं .... – jahmed31
नोट यह है कि एक क्षेत्र के अनुक्रम के कार्यक्रम संबंधी पहचान के लिए समारोह pg_get_serial_sequence। pg_get_serial_sequence ('tablename', 'colname') का चयन करें; –
गलत आईडी का अर्थ है, यह वास्तविक जनरेटिंग आईडी मान नहीं है। – user1369887