मैं यह कैसे निर्दिष्ट करूं कि pgAdmin में एक कॉलम को ऑटो-इंक्रीप्ट किया जाना चाहिए?


15

मैंने एक PostgreSQL डेटाबेस को प्रबंधित करने के लिए pgAdmin III सीखना शुरू कर दिया है। लेकिन एप्लिकेशन का उपयोग करना आसान नहीं था।

यदि मैं pgAdmin III के साथ एक तालिका बनाता हूं या बनाया है, तो मैं एक कॉलम आईडी पर "ऑटो-इंक्रीमेंट" -functionality कैसे जोड़ सकता हूं जिसमें टाइप पूर्णांक है?

जवाबों:


17

दो विकल्प: "डेटाटाइप" सीरियल का उपयोग करें या एक अनुक्रम बनाएं और अपने पूर्णांक के लिए डिफ़ॉल्ट मान के रूप में इस क्रम का उपयोग करें:

CREATE SEQUENCE your_seq;
CREATE TABLE foo(
  id int default nextval('your_seq'::regclass),
  other_column TEXT
);
INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;

1
इस उत्तर को GENERATED BY DEFAULT AS IDENTITYपोस्टग्रेज> = 10. के साथ शामिल करने के लिए अद्यतन किया जा सकता है
मैडब्रेक्स

15

यदि आप PGAdmin में ऐसा करना चाहते हैं, तो कमांड लाइन का उपयोग करना बहुत आसान है। PostgreSQL में ऐसा लगता है कि एक कॉलम में एक ऑटो वेतन वृद्धि जोड़ने के लिए, हमें पहले एक ऑटो वेतन वृद्धि अनुक्रम बनाने और इसे आवश्यक कॉलम में जोड़ने की आवश्यकता है। मुझे यह पसंद आया।

1) सबसे पहले आपको यह सुनिश्चित करने की आवश्यकता है कि आपकी मेज के लिए एक प्राथमिक कुंजी है। बिगिन्ट या स्मॉलिंट में प्राथमिक कुंजी का डेटा प्रकार भी रखें। (मैंने बिगिन्ट का इस्तेमाल किया, धारावाहिक नामक एक डेटा टाइप नहीं मिल सका जैसा कि अन्य उत्तर में वर्णित है)

2) फिर अनुक्रम पर राइट क्लिक करके एक अनुक्रम जोड़ें-> नया अनुक्रम जोड़ें । यदि तालिका में कोई डेटा नहीं है, तो अनुक्रम को छोड़ दें जैसा कि है, कोई भी बदलाव न करें। बस इसे बचा लो। यदि मौजूदा डेटा है, तो प्राथमिक कुंजी कॉलम में अंतिम या उच्चतम मान को परिभाषाओं में वर्तमान मान में जोड़ें जैसा कि नीचे दिखाया गया है। यहाँ छवि विवरण दर्ज करें

3) अंत में, nextval('your_sequence_name'::regclass)अपनी प्राथमिक कुंजी में डिफ़ॉल्ट मान के लिए लाइन जोड़ें जैसा कि नीचे दिखाया गया है।

यहाँ छवि विवरण दर्ज करें सुनिश्चित करें कि अनुक्रम नाम यहाँ सही है। यह सब है और ऑटो वेतन वृद्धि काम करना चाहिए।


4
मैं "PgAdmin में आसान" के बारे में असहमत हूं। आपको लगता है कि केवल कॉलम बनाने से क्लिक्स पर जाना आसान है SERIAL?
ypercube y

1
क्या मैं उन लोगों के लिए आसान कहता हूं जो GUI और यदि आप कमांड लाइन से परिचित नहीं हैं, तो उनका उपयोग करते हैं। :)
toing_toing
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.