পোস্টগ্রিএসকিউএল-তে কী কীভাবে বিদ্যমান সূচকে প্রাথমিক কীতে প্রচার করা যায়


13

আমি জানি কীভাবে কোনও টেবিলের মধ্যে একটি প্রাথমিক কী তৈরি করতে হয়, তবে আমি কীভাবে একটি বিদ্যমান কীটিকে একটি প্রাথমিক কী তৈরি করব? আমি একটি বিদ্যমান টেবিলটি অন্য একটি ডাটাবেস থেকে অনুলিপি করার চেষ্টা করছি। আমি যখন টেবিলটি দেখি, নীচে সূচকটি এই ফর্মটিতে রয়েছে:

"my_index" PRIMARY KEY, btree (column1, column2)

আমি সূচকটি এর সাথে তৈরি করেছি:

CREATE INDEX my_index ON my_table (column1, column2)

তবে কীভাবে এটিকে প্রাথমিক কী করা যায় তা আমি জানি না ...

আপডেট: আমার সার্ভারের সংস্করণটি 8.3.3


1
My_index প্রাথমিক কী নাম হিসাবে দেখানো হয়, তাহলে আপনি ইতিমধ্যে আছে একটি সূচক।
পোস্টগ্রিসে

1
আপনার PostgreSQL সংস্করণটি কী?
ফিলিপ্রেম

আমি 8.3.3 চালিয়ে যাচ্ছি
ওয়াইল্ডবিল

উত্তর:


16

আপনি প্রাথমিক কী সীমাবদ্ধতা যোগ করতে বিকল্প টেবিলে ব্যবহার করবেন । পোস্টগ্রিসে আপনি " ALTER TABLE .. ADD table_constraint_using_index" ফর্মটি ব্যবহার করে একটি সূচক "প্রচার" করতে পারেন

দ্রষ্টব্য, প্রাথমিক কীটির জন্য সূচকটি অবশ্যই অনন্য হতে হবে

ALTER TABLE my_table 
    ADD CONSTRAINT PK_my_table PRIMARY KEY USING INDEX my_index;

এটি আমার পক্ষে কার্যকর হয়নি। পিকে_মি_ টেবিল কী? আমি ধরে নিলাম এটি একটি লেবেল এবং আমি আমার টেবিলের নামটিতে 'পি কে_' যুক্ত করব? "ERROR:" অক্ষর 83 এর "
ব্যবহারের

1
@ ইংরাজিস্কি: ৯.১০ USING INDEXথেকে পাওয়া যায়। সুতরাং আমি অনুমান করি আপনি বর্তমান সংস্করণটি চালাচ্ছেন না
a_horse_with_no_name

না, আমি 8.3.3 ব্যবহার করছি আমি 8.3.3 এ কীভাবে করব?
ওয়াইল্ডবিল

5
প্রাচীন সংস্করণে এটি করার একমাত্র উপায় হ'ল সূচকটি ছেড়ে দেওয়া এবং একটি নতুন পিকে সীমাবদ্ধতা যুক্ত করা।
a_horse_with_no_name

2
@ এ_হর্স_বিহীন_নাম_নাম: আপনার একটি উত্তর দেওয়া উচিত: আপনার মন্তব্য অন্য উত্তরটির পূর্বাভাস দেয় ...
gbn

7

পোস্টগ্রেসকিএল-র সংস্করণে কোনও সূচককে প্রাথমিক কীতে রূপান্তর করা সম্ভব বলে আমি মনে করি না।

আমি কেবলমাত্র বিদ্যমান সূচিটি ফেলে দেব এবং আপনার নির্দিষ্ট কলামগুলি ব্যবহার করে প্রাথমিক কী তৈরি করব:

DROP INDEX my_index;
ALTER TABLE ONLY my_table ADD CONSTRAINT pk_my_table PRIMARY KEY(column1,column2);

7.4 এবং 8.4 এ কাজ করেছেন


বিটিডব্লিউ, "যদি কেবল সারণির নামের আগে নির্দিষ্ট করা হয় তবে কেবল সেই টেবিলটিই পরিবর্তন করা হয় ON কেবলমাত্র সুনির্দিষ্ট না করা থাকলে টেবিল এবং তার সমস্ত বংশধর টেবিল (যদি থাকে) পরিবর্তন করা হয়।"
পাওলো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.