CREATE SEQUENCE
का उपयोग करें :
CREATE SEQUENCE scores_job_id_seq; -- = default name for plain a serial
फिर scores.job_id
. में डिफ़ॉल्ट कॉलम जोड़ें :
ALTER TABLE scores ALTER COLUMN job_id SET DEFAULT nextval('scores_job_id_seq');
अगर आप बाइंड करना चाहते हैं कॉलम का क्रम (इसलिए कॉलम के डिलीट होने पर यह डिलीट हो जाता है), यह भी चलता है:
ALTER SEQUENCE scores_job_id_seq OWNED BY scores.job_id;
यह सब छद्म डेटा प्रकार serial
. का उपयोग करके बदला जा सकता है कॉलम के लिए job_id
आरंभ करने के लिए:
- Postgres में सीरियल प्राथमिक कुंजी कॉलम का उपयोग करने वाली तालिकाओं का सुरक्षित और सफाई से नाम बदलें?
यदि आपकी तालिका में पहले से ही पंक्तियाँ हैं, तो आप SEQUENCE
. सेट करना चाह सकते हैं अगले उच्चतम मान तक और तालिका में अनुपलब्ध सीरियल मान भरें:
SELECT setval('scores_job_id_seq', COALESCE(max(job_id), 1)) FROM scores;
वैकल्पिक रूप से:
UPDATE scores
SET job_id = nextval('scores_job_id_seq')
WHERE job_id IS NULL;
- पोस्टग्रेएसक्यूएल में उपयोग किए गए और अप्रयुक्त मानों के लिए कुशलतापूर्वक अनुक्रम की जांच कैसे करें
- पोस्टग्रेज़ मैन्युअल रूप से अनुक्रम को बदलते हैं
- सिंक से बाहर हो जाने पर पोस्टग्रेज के प्राथमिक कुंजी अनुक्रम को कैसे रीसेट करें?
केवल शेष अंतर, एक serial
कॉलम NOT NULL
पर भी सेट है . आप चाहें या न चाहें:
ALTER TABLE scores ALTER COLUMN job_id SET NOT NULL;
लेकिन आप नहीं बस मौजूदा integer
के प्रकार को बदलें :
ALTER TABLE scores ALTER job_id TYPE serial;
serial
वास्तविक डेटा प्रकार नहीं है। यह CREATE TABLE
. के लिए केवल एक उल्लेखनीय सुविधा सुविधा है .
पोस्टग्रेज 10 या बाद के संस्करण में IDENTITY
. पर विचार करें कॉलम:
- ऑटो इंक्रीमेंट टेबल कॉलम