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

दिनांक के अनुसार क्रमित मौजूदा तालिका में स्वतः वृद्धि स्तंभ जोड़ें

यदि आप इस तरह एक सीरियल कॉलम जोड़ते हैं, तो मौजूदा पंक्तियां स्वचालित रूप से "मनमानी" क्रम में अपडेट हो जाएंगी।

आईडी जनरेट होने के क्रम को नियंत्रित करने के लिए आपको इसे कई चरणों में करना होगा:

पहले बिना कॉलम जोड़ें एक डिफ़ॉल्ट (serial एक डिफ़ॉल्ट मान का अर्थ है)

ALTER TABLE tickets ADD COLUMN ticket_id integer;

फिर मान उत्पन्न करने के लिए एक क्रम बनाएँ:

create sequence tickets_ticket_id_seq;

फिर मौजूदा पंक्तियों को अपडेट करें

update tickets 
  set ticket_id = t.new_id
from (
   select id, nextval('tickets_ticket_id_seq') as new_id
   from tickets
   order by "date"
) t
where t.id = tickets.id;

फिर अनुक्रम को नए कॉलम के लिए डिफ़ॉल्ट बनाएं

alter table tickets alter column ticket_id set default nextval('tickets_ticket_id_seq');

अंत में, अनुक्रम को कॉलम के साथ संबद्ध करें (जो कि एक serial . है पृष्ठभूमि में भी करता है):

alter sequence tickets_ticket_id_seq owned by tickets.ticket_id;

यदि तालिका वास्तव में बड़ी है ("दसियों" या "सैकड़ों") तो एक नई तालिका बनाना तेज़ हो सकता है:

create sequence tickets_ticket_id_seq;
create table tickets_new
as
select id, nextval('activities_ticket_id_seq') ticket_id, "date", status
from tickets
order by "date";

drop table tickets cascade;
alter table tickets_new rename to tickets;
alter table tickets add primary key (id);
alter sequence tickets_ticket_id_seq owned by tickets.ticket_id;

फिर उस तालिका के लिए सभी विदेशी कुंजियाँ और अनुक्रमणिकाएँ फिर से बनाएँ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. छवि योग्य प्रकार बहुरूपी संघों के लिए सेटिंग नहीं कर रहा है

  2. PostgreSQL कनेक्शन नोडज के लिए एसएसएल

  3. विजुअल स्टूडियो में सुलभ होने के लिए कस्टम डीबी प्रदाता कैसे जोड़ें?

  4. लेटरल जॉइन ट्रिग्राम इंडेक्स का उपयोग नहीं कर रहा है

  5. रेडियो बटन एनजी-मॉडल के साथ एनजी-चेक किया गया