PostgreSQL এ সীমাবদ্ধতার নাম আপডেট


91

পোস্টগ্রিসে কি সীমাবদ্ধতার নাম পরিবর্তন করা সম্ভব? আমার সাথে একটি পিকে যুক্ত হয়েছে:

ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id);

এবং অন্যান্য সিস্টেমের সাথে সামঞ্জস্য রাখতে আমি এর আলাদা নাম রাখতে চাই। আমি কি বিদ্যমান পিকে সীমাবদ্ধতা মুছব এবং একটি নতুন তৈরি করব? বা এটি পরিচালনা করার কোনও 'নরম' উপায় আছে?

ধন্যবাদ!

উত্তর:


82

প্রাথমিক কীটির জন্য, আপনি ঠিক করতে সক্ষম হবেন:

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name

যদিও এটি অন্যান্য ধরণের বাধাগুলির জন্য কাজ করবে না। পুরানোটি বাদ দেওয়া এবং একটি নতুন তৈরি করা সর্বোত্তম বিকল্প। এটি কোনও লেনদেনের মধ্যেই করতে ভুলবেন না, যাতে সিস্টেমটি পুনর্নির্মাণের সময় এটি ছাড়া বাঁচে না। (এবং যদি আপনি একটি লেনদেনে এটা করতে পারি না, নতুন তৈরি নিশ্চিত করা প্রথম , আগে পুরানো এক ড্রপ)


155

পোস্টগ্রেএসকিউএল ৯.২ বা আরও নতুন কোনও সীমাবদ্ধতার নাম পরিবর্তন করতে, আপনি বিকল্প টেবিলে ব্যবহার করতে পারেন :

ALTER TABLE name RENAME CONSTRAINT constraint_name TO new_constraint_name;

4
@ আরতুরো হেরেরো আমরা একসাথে একাধিক প্রতিবন্ধকতার নামকরণ করতে পারি, যদি হ্যাঁ, কিভাবে?
এরলান

4
@ এরলান আপনি ক্যোয়ারির মাধ্যমে সমস্ত বাধাগুলির তালিকা পেতে পারেন pg_catalog, এর মাধ্যমে পুনরাবৃত্তি করতে পারেন LOOPএবং নাম পরিবর্তন করতে ডায়নামিক কোয়েরি ব্যবহার করতে পারেন।
ইভজেনি নজড্রেভ

1

আমরা দেখতে পেয়েছি যে প্রাথমিক কীগুলি প্রায়শই মূল টেবিলের নাম থেকে পিছনে থাকে। এই স্ক্রিপ্টটি আমাদের সমস্যাগুলি চিহ্নিত করতে এবং এটি ঠিক করতে সহায়তা করে।

select 
    table_name, 
    constraint_name , 
    'ALTER TABLE ' || table_name || ' RENAME CONSTRAINT ' || constraint_name || ' TO ' || left(table_name, 58) || '_pkey;'
from information_schema.table_constraints tc
where constraint_type  = 'PRIMARY KEY' 
and constraint_name <> left(table_name, 58) || '_pkey';

এটি এমন সমস্ত সারণী সন্ধান করে যেখানে প্রাথমিক কী নামটি আর "ডিফল্ট" প্যাটার্ন ( <tablename>_pkey) নয় এবং প্রতিটিটির জন্য একটি নতুন নাম স্ক্রিপ্ট তৈরি করে।

উপরের কোডে 58 টি চরিত্রের সীমাটি সীমাবদ্ধতার নামের সর্বাধিক আকারের (63 বাইটস) জন্য অ্যাকাউন্টে রয়েছে।

স্পষ্টতই ইন্দ্রিয়টি পরীক্ষা করার আগে এটি কী ফিরে আসে তা পরীক্ষা করে দেখুন। আশা করি এটি অন্যদের জন্য সহায়ক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.