কলামের প্রস্থ পরিবর্তন করা হচ্ছে


39

অবিচ্ছিন্নভাবে একটি কলাম (এনভারচার) প্রস্থ বৃদ্ধি করা কি টেবিলটি ফেলে দেবে?

অন্য কথায়, সক্রিয় ব্যবহারকারীদের সাথে কোনও প্রজনন পরিবেশে প্রস্থকে কী পরিবর্তন করা যেতে পারে?

আমি অনুভব করেছি যে আকারটি বাড়তে থাকলে (হ্রাস করার বিপরীতে) এটি কোনও সমস্যা হবে না।

উত্তর:


52

আপনি যদি এটি নীচের মতো টি-এসকিউএল স্টেটমেন্টের মাধ্যমে করেন তবে কোনও টেবিল ড্রপ আসবে না এবং আপনি নিরাপদে এটি উত্পাদন পরিবেশে করতে পারবেন:

alter table <table> alter column <column> nvarchar(biggernumber) [not] null

আপনি যদি এসএসএমএস ডিজাইনের সারণী জিইউআইয়ের মাধ্যমে করেন তবে পরিবর্তনটি কার্যকর করার জন্য এটি কোন স্ক্রিপ্টটি ব্যবহারের সিদ্ধান্ত নেয় তার উপর নির্ভর করবে। কখনও কখনও এটি অস্থায়ী টেবিলের মধ্যে ডেটা .োকাবে, মূল টেবিলটি ফেলে দেবে, সেই টেবিলটির একটি নতুন সংস্করণ তৈরি করবে এবং আবার নতুনটিতে এটি প্রবেশ করিয়ে দেবে। এটি কী করবে তা জানার একটি সহজ উপায় হ'ল "স্ক্রিপ্ট জেনারেট করুন" বোতামটি ক্লিক করা এবং এটি কার্যকর করার পরিকল্পনা করে টি-এসকিউএল দেখুন।


1
আমি ভেবেছিলাম এমনকি "স্ক্রিপ্ট জেনারেট করুন" বোতামটি একটি সতর্কতা ছুঁড়ে দেয় যে আপনি স্ক্রিপ্টটি দেখানোর আগে আপনি কোনও টেবিলটি ফেলে যাচ্ছেন।
নিক চাম্মাস

1
এটি ত্রুটিটি ছুঁড়ে দেয়, তবে স্ক্রিপ্ট সহ উইন্ডোতে ঠিক আছে (বা রান করুন বা যাই হোক) ক্লিক না করা পর্যন্ত এটি আসলে স্ক্রিপ্টটি চালায় না। আপনি স্ক্রিপ্টটি অনুলিপি করতে পারেন এবং উইন্ডোটি বাতিল করতে পারেন যা আপনাকে স্ক্রিপ্টটি দেখায়।
mrdenny

তবে এটি কি ভাসা থেকে দশমিক (এন, এন) এ পরিবর্তন বলার জন্য কাজ করে?
নিশানথ শান

টেবিলটি প্রতিলিপি করা হলে এর কী প্রভাব থাকে? আমি ধরে নিচ্ছি গ্রাহক টেবিলগুলি স্বয়ংক্রিয়ভাবে আপডেট হবে না?
টিএমউডস

18

কলামের কলামের প্রস্থ বৃদ্ধি করতে nvarcharকোনও টেবিল ড্রপ লাগবে না। না কোনও ALTER TABLEঅপারেশন হবে। সারণী বা কলামের বৈশিষ্ট্যগুলি পরিবর্তন করার সময় বিধিনিষেধ সম্পর্কে বিশদ জানতে আপনি টেবিল বিবৃতিতে পড়তে পারেন ।

আমি নীচের ডকুমেন্টেশন থেকে সর্বাধিক প্রাসঙ্গিক অংশগুলি অনুলিপি করেছি:

একটি কলামের আকার পরিবর্তন করা হচ্ছে

আপনি ALTER COLUMN ধারাটিতে কলামের ডেটা টাইপের জন্য একটি নতুন আকার নির্দিষ্ট করে একটি কলামের দৈর্ঘ্য, নির্ভুলতা বা স্কেল পরিবর্তন করতে পারেন। যদি কলামে ডেটা বিদ্যমান থাকে তবে নতুন আকারটি ডেটার সর্বোচ্চ আকারের চেয়ে ছোট হতে পারে না cannot এছাড়াও, কলামটি কোনও সূচীতে সংজ্ঞায়িত করা যায় না, যদি না কলামটি ভার্চার, এনভারচার বা ভের্বাইনারি ডেটা টাইপ হয় এবং সূচকটি কোনও প্রাথমিক কী বাধাটির ফলাফল না হয়। উদাহরণ দেখুন পি।

তালা এবং বিকল্প টেবিল AL

ALTER TABLE এ উল্লিখিত পরিবর্তনগুলি তত্ক্ষণাত্ কার্যকর করা হবে। পরিবর্তনের জন্য যদি সারণীতে সারিগুলির পরিবর্তনগুলির প্রয়োজন হয় তবে ALTER TABLE সারিগুলি আপডেট করে। পরিবর্তনের সময় টেবিলের জন্য অন্য কোনও সংযোগ এমনকি টেবিলের মেটাডেটা উল্লেখ না করে, শেষের দিকে খুব ছোট এসসিএইচ-এম লক থাকা দরকার কিনা তা নিশ্চিত করার জন্য টেবিলের টেবিলে স্কিমা সংশোধিত লকটি অর্জন করা হয়। অলটার টেবিলে ... সুইচ অপারেশনে, লকটি উত্স এবং লক্ষ্য টেবিল উভয়তেই অর্জিত হয়। টেবিলটিতে করা পরিবর্তনগুলি লগ এবং সম্পূর্ণ পুনরুদ্ধারযোগ্য। যে পরিবর্তনগুলি খুব বড় সারণীতে সমস্ত সারিগুলিকে প্রভাবিত করে যেমন একটি কলাম ছেড়ে যাওয়া বা ডিফল্টর সাথে একটি নল নয় কলাম যুক্ত করা অনেকগুলি লগ রেকর্ড সম্পূর্ণ করতে এবং তৈরি করতে দীর্ঘ সময় নিতে পারে। এই অল্টার টেবিলের বিবৃতিগুলি যে কোনও INSERT, আপডেট হিসাবে, একই যত্ন সহ কার্যকর করা উচিত,


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