কোনও ভারচার কলামের সর্বোচ্চ দৈর্ঘ্য পরিবর্তন করছেন?


188

আমি বিষয়বস্তু না হারাতে 255 টি অক্ষর থেকে 500 এ ভারচর কলামটির দৈর্ঘ্য আপডেট করার চেষ্টা করছি। আমি এর আগে টেবিলগুলি ফেলে দিয়েছি এবং পুনরায় তৈরি করেছি তবে আমি কখনই পরিবর্তিত বিবৃতি প্রকাশের মুখোমুখি হইনি যা আমি বিশ্বাস করি এটি করার জন্য আমার প্রয়োজন। আমি এখানে ডকুমেন্টেশন পেয়েছি: অল্টার টেবিল (ট্রান্সফ্যাক্ট-এসকিউএল) তবে আমি এর মাথা বা লেজ বানাতে পারি না।

আমার এখন পর্যন্ত নিম্নলিখিতগুলি রয়েছে (দুর্ভাগ্যবশত দুর্ভাগ্যবশত কিছুই নেই):

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3

আমি কিভাবে এই কাছে যেতে পারি? এই বিবৃতিটির জন্য কি আরও ভাল ডকুমেন্টেশন আছে (উদাহরণস্বরূপ বিবৃতি দেওয়ার জন্য আমি কিছু অনুসন্ধান করেছি তবে খালি এসেছি)?

উত্তর:


362

তোমার দরকার

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]

তবে NOT NULLইচ্ছুক হলে স্পষ্টভাবে উল্লেখ করতে ভুলবেন না ।

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;

যদি আপনি এটিকে নীচে হিসাবে অনির্ধারিত ছেড়ে যান ...

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);

তারপরে কলামটি নুলকে অনুমতি দেওয়ার ক্ষেত্রে ডিফল্ট হবে এমনকি যদিও এটি মূল হিসাবে সংজ্ঞায়িত হয়েছিল NOT NULL। যেমন একটি মধ্যে স্পেসিফিকেশন বাদ ALTER TABLE ... ALTER COLUMNসবসময় হিসাবে বিবেচনা করা হয়।

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;

এই আচরণটি ALTER TABLE(বা সময়ে CREATE TABLE) তৈরি নতুন কলামগুলির জন্য ব্যবহৃত থেকে আলাদা । সেখানে ডিফল্ট অযোগ্যতা ANSI_NULL_DFLTসেটিংসের উপর নির্ভর করে ।


আপনি এখানে ['নয়] নুল' যুক্ত করার উদ্দেশ্য ব্যাখ্যা করতে পারেন? কেবল কৌতূহল আপনার উত্তরটিতে কেন এই মিচ নেই?
মাইকেল এ


সুতরাং [নাল নয়] সুনির্দিষ্ট করে যে কুলিতে নুল মান -কেনট- স্থাপন করা যায়?
মাইকেল এ

3
@ মিশেল - বর্গাকার বন্ধনী ছাড়া, হ্যাঁ। বর্গাকার বন্ধনীগুলি সূচিত করে যে সিনট্যাক্সের বিটটি isচ্ছিক। যদি আপনি এটি বাদ দেন NULLতবে তা ডিফল্ট allowing
মার্টিন স্মিথ

1
এটি সাজিয়ে রেখেছে :) .. ALOLMOLY MY_COL SET Data DYPE VARCHAR (100)
Kdean571

26

এর সাথে কলামের আকার বাড়ানো ALTERকোনও ডেটা হারাবে না:

alter table [progennet_dev].PROGEN.LE 
    alter column UR_VALUE_3 varchar(500) 

@ মার্টিন যেমন উল্লেখ করেছেন, স্পষ্টভাবে উল্লেখ করতে ভুলবেন না NULL | NOT NULL


14

আপনি ব্যবহার করতে পারেন modify:

ALTER TABLE `table name` 
modify COLUMN `column name` varchar("length");

4
ইতোমধ্যে পোস্ট করা হয়েছিল। আপনি কি নতুন কিছু ভাগ করতে চান?
নিকো হাজেস

এছাড়াও এটি মাইএসকিউএল এর জন্য কাজ করে এবং এই প্রশ্নটিকে [টিএসকিউএল] ট্যাগ করা হয়েছে যাতে এটি ভুল জায়গায় রয়েছে
জিন

6
মোডিফাই হ'ল নতুন। ALTER COLUMN আমাকে একটি সিনট্যাক্স ত্রুটি দিয়েছে কিন্তু মোডিফাই কলাম কোনও সমস্যা ছাড়াই আমার পক্ষে কাজ করেছেন।
কেজিবিগার্ড

@ কেজিবিয়ার্ড - কারণ আপনি এসকিউএল সার্ভার ব্যবহার করছেন না। MODIFYপ্রশ্নটি
মার্টিন স্মিথ

1

ইন্টেলিজজের অভ্যন্তরে মারিয়া-ডিবি এবং ডিবি-নেভিগেটর সরঞ্জাম ব্যবহার করে, মোডিফাই কলাম অলটার কলামের পরিবর্তে আমার পক্ষে কাজ করেছে


2
এই পোস্টটি 12 জানুয়ারী 12'12 এ 1:37-এ @ মিচ গমের দেওয়া উত্তরে আর কী যুক্ত করবে?
স্কোপচানভ

1
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);

প্রশ্নের দেরীতে - তবে আমি ওরাকল এসকিউএল বিকাশকারীকে ব্যবহার করছি এবং @ বেনামের উত্তরটি সবচেয়ে কাছের ছিল তবে আমি এই প্রশ্নের উত্তর সম্পাদনা না করা অবধি সিনট্যাক্স ত্রুটিগুলি পেয়েছি।

আশা করি এটি কাউকে সাহায্য করবে


(পরিবর্তনের জন্য পরিবর্তিত হয়েছে এবং কলাম হিসাবে নামটি কলাম হিসাবে সংজ্ঞায়িত করার প্রয়োজন নেই)
জেট

0

আমার সন্দেহও ছিল যে আমার পক্ষে কী কাজ করেছে what

ALTER TABLE `your_table` CHANGE `property` `property` 
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;  

0

এটি আমার জন্য ডিবি 2 তে কাজ করেছে:

alter table "JOBS"  alter column "JOB_TITLE" set  data type varchar(30);

0

বিকল্প হিসাবে, আপনি পুরানো ডেটা সংরক্ষণ করতে এবং নতুন পরামিতিগুলির সাহায্যে একটি নতুন টেবিল তৈরি করতে পারেন।

চিত্র দেখুন

এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে: "আপনার ডাটাবেস" => টাস্ক => জেনারেটস স্ক্রিপ্ট => নির্দিষ্ট ডাটাবেস অবজেক্টটি নির্বাচন করুন => "আপনার টেবিল" => উন্নত => স্ক্রিপ্টে ডেটা ধরণের - স্কিমা এবং ডেটা => উত্পন্ন

ব্যক্তিগতভাবে, আমি তাই করেছি।


-1

মারিয়াডিবি-র জন্য, সংশোধিত কলামটি ব্যবহার করুন :

ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR (500);

এটা কাজ করবে।


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