PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

मौजूदा टेबल पर एक सीक्वेंस बनाना

नया कॉलम जोड़ते समय डिफ़ॉल्ट मान सेट करें:

create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');

मौजूदा कॉलम के लिए डिफ़ॉल्ट मान को बदलने से मौजूदा डेटा नहीं बदलता है क्योंकि डेटाबेस के पास यह जानने का कोई तरीका नहीं है कि कौन से मान बदले जाने चाहिए; कॉलम मानों पर कोई "इस कॉलम का डिफ़ॉल्ट मान" ध्वज नहीं है, केवल डिफ़ॉल्ट मान है (मूल रूप से NULL क्योंकि आपने कुछ और निर्दिष्ट नहीं किया है) और वर्तमान मान (NULL भी) लेकिन "NULL" के बीच अंतर बताने का तरीका क्योंकि यह डिफ़ॉल्ट है" और "NULL क्योंकि यह स्पष्ट रूप से NULL पर सेट किया गया था"। इसलिए, जब आप इसे दो चरणों में करते हैं:

  1. कॉलम जोड़ें।
  2. डिफ़ॉल्ट मान बदलें।

PostgreSQL आपके द्वारा अभी जोड़े गए कॉलम पर डिफ़ॉल्ट मान लागू नहीं करेगा। हालाँकि, यदि आप कॉलम जोड़ते हैं और एक ही समय में डिफ़ॉल्ट मान की आपूर्ति करते हैं तो PostgreSQL को पता होता है कि किन पंक्तियों में डिफ़ॉल्ट मान (उनमें से सभी) हैं, इसलिए यह कॉलम जोड़े जाने पर मानों की आपूर्ति कर सकता है।

वैसे, आप शायद उस कॉलम पर भी NOT NULL चाहते हैं:

create sequence rid_seq;
alter table test add column rid integer not null default nextval('rid_seq');

और, a_horse_with_no_name के रूप में नोट, यदि आप केवल rid_seq . का उपयोग करना चाहते हैं आपके test.rid . के लिए कॉलम तो आप इसके स्वामी कॉलम को सेट करना करना चाहेंगे करने के लिए test.rid ताकि अगर कॉलम को हटा दिया जाए तो अनुक्रम गिरा दिया जाएगा:

alter sequence rid_seq owned by test.rid;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में ओवरलैपिंग तिथियों के लिए परीक्षण कैसे करें

  2. सरणियों पर कुल कार्य

  3. मैं postgres_fdw का उपयोग करके किसी अन्य डेटाबेस में एक सम्मिलित क्वेरी कैसे तैयार करूं?

  4. जब एसएसएल समर्थन विदेशी डेटा रैपर का उपयोग करके संकलित नहीं किया जाता है तो एसएसएलमोड मान को पोस्टग्रेज करना अमान्य है

  5. कैसे अजगर के साथ Postgresql में JSONB सम्मिलित करने के लिए?