কীভাবে মাইএসকিউএলে বিদ্যমান কলামটিতে নালার বাধা যুক্ত করবেন না


164

আমার নীচের কলামের নাম সহ "ব্যক্তি" নামে সারণির নাম রয়েছে

P_Id(int),
LastName(varchar),
FirstName (varchar).

আমি দিতে ভুলে গেছি NOT NULL করার কনস্ট্রেইন্ট অর্থাৎ P_Id

NOT NULLবিদ্যমান কলামটিতে সীমাবদ্ধতা যুক্ত করার জন্য আমি নিম্নলিখিত প্রশ্নের সাথে চেষ্টা করেছি P_Id,

1. ALTER TABLE  Person MODIFY  (P_Id NOT  NULL);
2. ALTER TABLE Person ADD CONSTRAINT NOT  NULL NOT NULL (P_Id);

আমি সিনট্যাক্স ত্রুটি করছি ...

উত্তর:


261

কেবল একটি ALTER TABLE... MODIFY...কোয়েরি ব্যবহার করুন NOT NULLএবং আপনার বিদ্যমান কলাম সংজ্ঞাতে যুক্ত করুন। উদাহরণ স্বরূপ:

ALTER TABLE Person MODIFY P_Id INT(11) NOT NULL;

সতর্কতার শব্দ: কোয়েরি ব্যবহার করার সময় আপনাকে আবার পূর্ণ কলাম সংজ্ঞা নির্দিষ্ট করতে হবে MODIFY। যদি আপনার কলামে উদাহরণস্বরূপ কোনও DEFAULTমান বা কলামের মন্তব্য থাকে তবে আপনাকে MODIFYবিবরণীতে এটি ডেটা টাইপ এবং এর সাথে উল্লেখ NOT NULLকরতে হবে, বা এটি হারিয়ে যাবে। এই জাতীয় দুর্ঘটনা থেকে রক্ষা পাওয়ার সবচেয়ে নিরাপদ অনুশীলন হ'ল একটি SHOW CREATE TABLE YourTableক্যোয়ারীর আউটপুট থেকে কলাম সংজ্ঞাটি অনুলিপি করা , NOT NULLসীমাবদ্ধতা অন্তর্ভুক্ত করার জন্য এটি সংশোধন করে আপনার ALTER TABLE... MODIFY...জিজ্ঞাসায় আটকানো ।


4
@ পজিটিভ আপনি কেন লিখেছেন INT(11)এবং শুধু নয় INT? এর প্রভাব কী 11?
সুজান ডুপোরন

2
১১ টি কেবল একটি উদাহরণ, এটি পি_আইডি এর দৈর্ঘ্য নির্ধারণ করে। আপনি এটি পরিবর্তন করতে নাও চাইলেও এটি আবার যুক্ত করার প্রয়োজন কিনা তা আমি নিশ্চিত নই।
জেরার্ড

2
@ পেসারিয়ার আপনার সাথে changeকলামটির নামটি সংশোধন করুন
জাভিয়ের পি

1
@ ভিক্টরও MODIFYওরাকল দ্বারা সমর্থিত। এবং পোস্টগ্র্রেএসকিউএল সমর্থন করে না CHANGEপরিবর্তে এটি একটি ALTER [COLUMN]বিবৃতি সরবরাহ করে।
মিঃ ডেথলেস

1
স্বরে নোট করুন: কাঠামোগত ক্যোয়ারী ভাষা কোনও আদর্শ কোয়েরি ভাষা নয় ...
দিমিত্রি

20

এটি চেষ্টা করে দেখুন, আপনি পরিবর্তন এবং সংশোধন করার মধ্যে পার্থক্য জানতে পারবেন,

ALTER TABLE table_name CHANGE curr_column_name new_column_name new_column_datatype [constraints]

ALTER TABLE table_name MODIFY column_name new_column_datatype [constraints]
  • আপনি ব্যবহার করে নির্দিষ্ট কলামের নাম এবং ডেটাটাইপ পরিবর্তন করতে পারেন CHANGE
  • আপনি নির্দিষ্ট কলামটি ডেটাটাইপ ব্যবহার করে পরিবর্তন করতে পারেন MODIFY। আপনি এই বিবৃতিটি ব্যবহার করে কলামটির নাম পরিবর্তন করতে পারবেন না।

আশা করি, আমি বিস্তারিতভাবে ব্যাখ্যা করেছি।


5
আপনি পরিবর্তনের জন্য মোডিফাই অপারেশন করেন তবে বিপরীত সম্ভব নয়?
নবরততন যাদব

1
অদ্ভুতভাবে আমি একটি ত্রুটি পেয়ে যাচ্ছিলাম (মাইএসকিউএল 5.6, ওয়ার্কবেঞ্চ 6.3) আমি কলাম পরিবর্তন করেছি / পরিবর্তন করছি যার নাম নাল_ইয়ার্ত_রেট_কাউন্ট, আমি ত্রুটি ছিল # 1138, নুল মানটির অবৈধ ব্যবহার। আমাকে এর পরিবর্তে কলামটি ফেলে দিতে হয়েছিল।
উইলিয়াম টি। ম্যালার্ড

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