আমি কীভাবে একটি পোস্টগ্রিএসকিউএল টেবিলটি পরিবর্তন করব এবং একটি কলামকে অনন্য করে তুলব?


166

পোস্টগ্রিএসকিউএল-এ আমার একটি টেবিল রয়েছে যেখানে স্কিমাটি দেখতে এই রকম দেখাচ্ছে:

CREATE TABLE "foo_table" (
    "id" serial NOT NULL PRIMARY KEY,
    "permalink" varchar(200) NOT NULL,
    "text" varchar(512) NOT NULL,
    "timestamp" timestamp with time zone NOT NULL
)

এখন আমি টেবিলটি ALTER-ing করে টেবিল জুড়ে পারমালিঙ্কটি অনন্য করতে চাই। কেহ এই আমাকে সাহায্য করতে পারেন?

টিয়া


2
create unique index on foo_table (permalink)
— a_horse_with_no_name

উত্তর:


270

পোস্টগ্র্রেএসকিউএল ডক্স থেকে আমি এটি আবিষ্কার করেছি, সঠিক বাক্য গঠনটি হ'ল:

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn);

ধন্যবাদ ফ্রেড ।


231

অথবা, ডিবি স্বয়ংক্রিয়ভাবে একটি সীমাবদ্ধ নাম ব্যবহার করে:

ALTER TABLE foo ADD UNIQUE (thecolumn);

1
আপনি যদি এটি করেন তবে পোস্টগ্র্যাসগুলি সীমাবদ্ধতা তৈরি করতে চলেছে তবে নামটি "স্বয়ংক্রিয়ভাবে" যাচ্ছে "শব্দ" যুক্ত শব্দটি word আমি সবেমাত্র এটি চেষ্টা করেছি
— সান্তি

আমি যখন উপরের সিনট্যাক্সটি ব্যবহার করি তখন পোস্টগ্র্রেস নামের সাথে নতুন কনট্রিন্ট তৈরি করে mytable_mycolumn_key আমি এতে খুশি :-)
— অ্যাডাম

41

1 টিরও বেশি কলামের অনন্য সীমাবদ্ধতা তৈরি করাও সম্ভব:

ALTER TABLE the_table 
    ADD CONSTRAINT constraint_name UNIQUE (column1, column2);

এটি এমন ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE (payload::text, name);ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE ((payload::text), name);
— কিছুর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.