मेरे पास एक समग्र पीके (code_id, user_id) वाला एक टेबल है, जिसमें पहले से ही 100k रिकॉर्ड हैं। क्या नीचे दिए गए उदाहरण की तरह समग्र PK से एकल PK में जाना सुरक्षित है?

ALTER TABLE orders
  DROP CONSTRAINT pk_code_id_user_id,
  ADD COLUMN order_id SERIAL,
  ADD CONSTRAINT pk_order_id PRIMARY KEY (order_id);

2
xxx_coder_noscope 16 सितंबर 2020, 17:33

1 उत्तर

सबसे बढ़िया उत्तर

हाँ, यह सुरक्षित है और काम करेगा।

एकमात्र समस्या यह है कि इस कथन को पूरा होने में कुछ समय लग सकता है:

  • सभी पंक्तियों को DEFAULT अनुक्रम मान के साथ अद्यतन करना होगा

  • एक नया अनूठा सूचकांक बनाया गया है

  • PostgreSQL जाँचता है कि order_id IS NOT NULL सभी पंक्तियों के लिए

उस समय के दौरान, तालिका ACCESS EXCLUSIVE मोड में बंद रहती है, इसलिए यह समवर्ती पढ़ने के लिए भी उपलब्ध नहीं है।

लेकिन इस तरह की एक छोटी सी मेज के साथ कोई बड़ी समस्या नहीं होनी चाहिए।

यदि विदेशी कुंजी बाधाएं हैं जो पुरानी प्राथमिक कुंजी बाधा को संदर्भित करती हैं तो चीजें अधिक जटिल हो जाती हैं। आपको उन्हें भी छोड़ना होगा और एक अच्छे प्रतिस्थापन के बारे में सोचना होगा।

2
Laurenz Albe 16 सितंबर 2020, 14:51