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

प्राथमिक कुंजी को समग्र प्राथमिक कुंजी में बदलना

आप एक अनावश्यक अद्वितीय बाधा id . पर इससे पहले कि आप प्राथमिक कुंजी छोड़ दें बाधा यह FK बाधाओं की आवश्यकता को पूरा करता है। प्रति दस्तावेज़:

बोल्ड जोर मेरा।

जाहिर है, एफके बाधा पीके बाधा के लिए बाध्य है जिसे स्पष्ट रूप से pg_निर्भर करें . इसलिए आपको सभी संदर्भित FK बाधाओं या सिस्टम तालिकाओं के साथ गड़बड़ी को छोड़ने और बाद में फिर से बनाने की आवश्यकता है (जो उचित नहीं है!)। एक लेन-देन में सर्वश्रेष्ठ संदर्भात्मक अखंडता बरकरार रखने के लिए:

BEGIN;
ALTER TABLE bar DROP CONSTRAINT bar_id_foo_fkey;

ALTER TABLE foo 
    DROP CONSTRAINT foo_pkey
  , ADD CONSTRAINT foo_uni_id UNIQUE (id)
  , ADD PRIMARY KEY (id, id2);

ALTER TABLE bar ADD CONSTRAINT bar_id_foo_fkey
  FOREIGN KEY (id) REFERENCES foo (id);

COMMIT;

SQL Fiddle. (अन्य बातों के अलावा नाम प्रदान करने वाली सूची प्रविष्टियों को दिखाने के लिए प्रश्नों के साथ।)

मैनुअल में ALTER TABLE में विवरण

यह केवल मध्यवर्ती राज्य के रूप में समझ में आता है। अगर id रहता है UNIQUE NOT NULL , यह PK भी हो सकता है।



  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. प्राथमिक कुंजी उल्लंघन त्रुटि के बाद लेनदेन जारी रखना

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

  4. PostgreSQL:गिनती के बाद वापसी संदेश =0

  5. PostgreSQL के लिए जेनरेट किए गए कॉलम का अवलोकन