आप एक अनावश्यक अद्वितीय
बाधा
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 भी हो सकता है।