কীভাবে একটি কলাম পরিবর্তন করতে এবং ডিফল্ট মান পরিবর্তন করতে?


190

কলামের ডেটা ধরণের পরিবর্তন করতে এবং একটি নতুন ডিফল্ট মান সেট করার সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

ALTER TABLE foobar_data ALTER COLUMN col VARCHAR(255) NOT NULL SET DEFAULT '{}';

ত্রুটি 1064 (42000): আপনার এসকিউএল সিন্টেক্সে আপনার একটি ত্রুটি রয়েছে; ডান সিনট্যাক্সের জন্য আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সামঞ্জস্যপূর্ণ ম্যানুয়ালটি পরীক্ষা করুন 'ভ্রচার' (255) লাইন 1 এ 'ডিফল্ট' {} '' নয়


আমি মনে করি না তোমার কাছে ডিফল্টের আগে এসইটি দরকার
জোনাস টি

উত্তর:


274
ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}';

দ্বিতীয় সম্ভাবনা যা একই কাজ করে (জুয়ারজেন_ডিকে ধন্যবাদ):

ALTER TABLE foobar_data CHANGE COLUMN col col VARCHAR(255) NOT NULL DEFAULT '{}';

9
columnঐচ্ছিক। আপনি কেবল ব্যবহার করতে পারেন ALTER TABLE foobar_data MODIFY col VARCHAR(255) NOT NULL DEFAULT '{}';বা ALTER TABLE foobar_data CHANGE col col VARCHAR(255) NOT NULL DEFAULT '{}';ফলাফল একই হবে।
কাপাড

1
এটি ডিফল্ট স্ট্রিং যা ওপি চেয়েছিল। যখন আপনি একটি সারি সন্নিবেশ করানোর সময় এই কলামটির জন্য কোনও মান নির্দিষ্ট করেন না তখন মানটি হয়ে যায় {}
অভিনব প্যান্টস

1
colএকে অপরের পাশে দুটি লেখা কি সঠিক? ( col col
এটির

4
@ শাফিজাদেহ হ্যাঁ, এটি। এটি কলামটির নতুন নামকরণের সম্ভাবনা সরবরাহ করে। প্রথমটির মূল নাম, দ্বিতীয়টি নতুন নাম।
অভিনব প্যান্টস

3
আপনার যদি কেবল DEFAULTমান পরিবর্তন করতে হয় তবে এটি ব্যবহার করবেন না । এটি কোনও কিছুর জন্য টেবিলের সমস্ত সারি প্রক্রিয়া করবে (বিশাল টেবিলগুলিতে খুব দীর্ঘ)। পরিবর্তে ব্যবহার করুন ALTER TABLE <table_name> ALTER COLUMN <column_name> SET DEFAULT <value>যা তাত্ক্ষণিক।
ডলম্যান

114

অনুসরণ হিসাবে, আপনি যদি কেবল একটি ডিফল্ট সেট করতে চান তবে নিশ্চিত আপনি ALTER .. সেট বাক্য গঠন ব্যবহার করতে পারেন। অন্যান্য সমস্ত জিনিস সেখানে রাখবেন না। আপনি যদি কলামের বাকী সংজ্ঞাটি বাকী রাখেন তবে গৃহীত উত্তর অনুসারে মোডিফাই বা পরিবর্তন বাক্য গঠন ব্যবহার করুন।

যাইহোক, কলাম ডিফল্ট সেট করার জন্য ALTER বাক্য গঠন, (যেহেতু আমি এখানে আসার পরে আমি সন্ধান করছিলাম):

ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT 'literal';

যার জন্য 'আক্ষরিক' একটি সংখ্যাও হতে পারে (উদাঃ ...SET DEFAULT 0)। আমি চেষ্টা করে দেখিনি ...SET DEFAULT CURRENT_TIMESTAMPতবে কেন এহ?


5
এছাড়াও কারেন্ট_টাইমস্ট্যাম্প উদ্ধৃত হলে আমার পক্ষে কাজ করছে না। আমাকে নিম্নলিখিতগুলি ব্যবহার করতে হয়েছিল:ALTER TABLE table_name MODIFY COLUMN column_name TIMESTAMP NOT NULL DEFAULT current_timestamp;
নেরিস

7
+1 আমার পক্ষে সেরা উত্তর, কারণ সেভাবে আমাকে কলামের ধরণ এবং কোনও পরিবর্তন হবে না এমন অন্যান্য জিনিস নির্দিষ্ট করার দরকার নেই!
ব্যবহারকারী 2342558

2
এটি কেবল DEFAULTমান পরিবর্তন করার দক্ষ উত্তর ।
ডলম্যান

1
আপনি যদি ডিফল্ট মানটি সন্নিবেশের সময় হতে চান তবে ব্যবহার করুন NOW()বা current_timestamp()@ ম্যালাইজ @ নেরিস
ব্লু ক্যাকটি

16

আপনি যদি ইতিমধ্যে তৈরি কলামটির জন্য ডিফল্ট মান যুক্ত করতে চান তবে এটি আমার পক্ষে কাজ করে:

ALTER TABLE Persons
ALTER credit SET DEFAULT 0.0';

2
আপনার বিদ্যমান ক্ষেত্রের স্পেসিফিকেশন অনুলিপি করার প্রয়োজন নেই বলে এটি সেরা উত্তর।
rjh

4

ডিফল্ট CURRENT_TIMESTAMP এর জন্য:

ALTER TABLE tablename
 CHANGE COLUMN columnname1 columname1 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
 CHANGE COLUMN columnname2 columname2 DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;

ডাবল কলাম নাম ঘোষণার নোট করুন

ডিফল্ট CURRENT_TIMESTAMP সরানো হচ্ছে:

ALTER TABLE tablename
 ALTER COLUMN columnname1 DROP DEFAULT,
 ALTER COLUMN columnname2 DROPT DEFAULT;

ডাবল কলামের নাম কেন?
এমকেজে

2
টেবিলের টেবিলের নাম পরিবর্তন করুন কলাম পুরানো কলম নাম নতুন কলম্ব নাম কলামের সংজ্ঞা
লিওনার্ড লেপাদাতু

1

গৃহীত উত্তর ভাল কাজ করে।

NULL মান ত্রুটির অবৈধ ব্যবহারের ক্ষেত্রে , চালু NULL মানগুলিতে, সমস্ত শূন্য মানগুলি সেই কলামে ডিফল্ট মানটিতে আপডেট করুন এবং তারপরে পরিবর্তনটি করার চেষ্টা করুন।

UPDATE foobar_data SET col = '{}' WHERE col IS NULL;

ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '{}';

আমার যা দরকার ছিল। ধন্যবাদ
আর্স্লিওন 18

0

যদি উপরেরগুলি আপনার পক্ষে কাজ করে না (যেমন: আপনি নতুন এসকিউএল বা অ্যাজুরি দিয়ে কাজ করছেন) ) নিম্নলিখিত চেষ্টা করুন:

1) বিদ্যমান কলামের সীমাবদ্ধতা বাদ দিন (যদি থাকে):

ALTER TABLE [table_name] DROP CONSTRAINT DF_my_constraint

2) একটি নতুন তৈরি করুন:

ALTER TABLE [table_name] ADD CONSTRAINT DF_my_constraint  DEFAULT getdate() FOR column_name;

0

এটা চেষ্টা কর

ALTER TABLE `table_name` CHANGE `column_name` `column_name` data_type  NULL DEFAULT '';

এটার মত

ALTER TABLE `drivers_meta` CHANGE `driving_license` `driving_license` VARCHAR(30) NULL DEFAULT '';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.