একটি মাইএসকিউএল কলামটি স্বয়ংক্রিয়ভাবে পরিণত করুন


194

আমি AUTO_INCREMENTসত্যের পরে কোনও টেবিলের প্রাথমিক কী কলামটি তৈরি করার চেষ্টা করছি । আমি নিম্নলিখিত এসকিউএল চেষ্টা করেছি, কিন্তু একটি সিনট্যাক্স ত্রুটি বিজ্ঞপ্তি পেয়েছি।

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

আমি কি কিছু ভুল করছি বা এটি সম্ভব নয়?

+ + -------------------- + +
| সংস্করণ () |
+ + -------------------- + +
| 5.0.75-0ubuntu10.2 |
+ + -------------------- + +

উত্তর:


379
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

3
আমি আগ্রহী যে আপনি কেন INT (4) পরামর্শ দেবেন। কোন বিশেষ কারণ?
স্টিভেন অক্সলে

3
@ স্টিভেন অক্সলে কারণ আমি আমার টেবিলটি সেভাবে ঘোষণা করেছি।
সি রস 19

30
বন্ধনীগুলির মধ্যে একটি সংখ্যা নির্দিষ্ট করে মাইএসকিউএল পূর্ণসংখ্যার ধরণের জন্য ঠিক কিছুই হয় না (ভাল ঠিক আছে, প্রায় কিছুই নয়)। সংখ্যার দ্বারা প্রভাবিত হতে পারে কেবলমাত্র এটি হ'ল ডিসপ্লে প্রস্থ এবং এটি ক্লায়েন্টের উপর নির্ভর করে। তবে প্রতারণা করবেন না এবং ভাবেন না যে এটি ভর্চার এবং ডেসিমাল প্রকারের মতোই কাজ করে - এই ক্ষেত্রে আপনি সেখানে যে পরিমাণ তথ্য সংরক্ষণ করতে পারবেন তা প্রকৃতপক্ষে নির্দিষ্ট করা হয়েছে, অন্যদিকে আইএনটির একটি নির্দিষ্ট গন্ধ সবসময় সঠিক সংরক্ষণের অনুমতি দেয় মানগুলির একই পরিসীমা
রোল্যান্ড বোম্যান 20

এই ক্রিয়াকলাপগুলি করার সময় আমি সবসময় একটি প্রাথমিক কী ত্রুটি পাই, তাই আমি যা করি তা এই: ফরেইগ_কেই_ CHECKS = 0 সেট করুন; টেবিল নথি ড্রপ প্রাথমিক কী; প্রাথমিক টেবিলে নথি মোডেফাই কলম ডকুমেন্ট_আইডি প্রাথমিক কী স্বতঃসিদ্ধ না; বিদেশে সেট করুন_কিজি_চেক = = 1;
ফার্নান্দো

এটি মাইএসকিউএলে কাজ করবে বলে মনে হচ্ছে না কারণ আপনাকে কলামটি প্রাথমিক কী হিসাবে সেট করতে হবে যেহেতু কেবলমাত্র একটি কলামে অটো_সংশোধন করার অনুমতি রয়েছে ( রোল্যান্ড
বোম্যানের

74

রোমান ঠিক বলেছেন, তবে মনে রাখবেন যে অটো_সংশোধন কলাম অবশ্যই মূল কী বা একটি অনন্য কী এর অংশ হতে হবে (এবং প্রায় 100% ক্ষেত্রে এটি একমাত্র কলাম হওয়া উচিত যা প্রাথমিক কী তৈরি করে):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

10
+1 টি। সারণী তৈরির সময় সংজ্ঞায়িত না হলে প্রাথমিক কী প্রয়োজন।

1
এছাড়াও এর অর্থ এই যে কলামটিতে ডেটা ইতিমধ্যে স্বতন্ত্র হওয়া দরকার
উমাইর মালহি

10

আমার ক্ষেত্রে এটি তখনই কাজ করেছিল যখন আমি রাখি not null। আমি মনে করি এটি একটি সীমাবদ্ধতা।

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

7

এটি করার জন্য এসকিউএল হ'ল:

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

আপনার এসকিউএল নাও কাজ করতে পারে তার বেশ কয়েকটি কারণ রয়েছে। প্রথমত, আপনাকে অবশ্যই ডেটা টাইপ ( INTএই ক্ষেত্রে) পুনরায় নির্দিষ্ট করতে হবে । এছাড়াও, যে কলামটি আপনি পাল্টানোর চেষ্টা করছেন সেটি অবশ্যই সূচিকৃত হতে হবে (এটি প্রাথমিক কী হতে হবে না, তবে সাধারণত এটি আপনি চান)। তদতিরিক্ত, AUTO_INCREMENTপ্রতিটি টেবিলের জন্য কেবল একটি কলাম থাকতে পারে । সুতরাং, আপনি নিম্নলিখিত এসকিউএল চালাতে চাইতে পারেন (যদি আপনার কলামটি সূচিযুক্ত না হয়):

ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;

: আপনি মাইএসকিউএল ডকুমেন্টেশনে আরো তথ্য পেতে পারেন http://dev.mysql.com/doc/refman/5.1/en/alter-table.html পরিবর্তন কলাম সিনট্যাক্স এবং জন্য http://dev.mysql.com/doc /refman/5.1/en/create-table.html কলাম নির্দিষ্ট করার বিষয়ে আরও তথ্যের জন্য।


6

auto_incrementনির্দেশের আগে আপনাকে অবশ্যই কলামের ধরণ উল্লেখ করতে হবে , যেমন ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT


1
এটি হওয়া উচিতMODIFY COLUMN
shxfi

5

AUTO_INCREMENT কলামের ডেটাটাইপের অংশ, আপনাকে আবার কলামের জন্য সম্পূর্ণ ডেটাটাইপ সংজ্ঞায়িত করতে হবে:

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

( intউদাহরণ হিসাবে নেওয়া, আপনি এটি কলামটি আগে থাকা টাইপ হিসাবে সেট করা উচিত)


3

আপনি এটি এর মতো করতে পারেন:

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;

এটি অন্য সমস্ত উত্তরগুলির পুনরাবৃত্তি বলে মনে হচ্ছে।
পাইং

2

AUTO_INCREMENT কলামের ডেটাটাইপের অংশ, আপনাকে আবার কলামের জন্য সম্পূর্ণ ডেটাটাইপ সংজ্ঞায়িত করতে হবে:

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(উদাহরণস্বরূপ গৃহীত পূর্বে, আপনি এটি কলামটি আগে থাকা টাইপ হিসাবে সেট করা উচিত)


2

আপনি স্বয়ংক্রিয়ভাবে বৃদ্ধি করতে ডকুমেন্ট_আইডি করতে নীচের প্রশ্নটি ব্যবহার করতে পারেন

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

ডকুমেন্ট_আইডির প্রাথমিক কীটিও তৈরি করা পছন্দসই

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;

1
মনে রাখবেন যে কলামটি যদি ইতিমধ্যে একটি প্রাথমিক কী হয় তবে আপনি আবার এটি ঘোষণা করতে পারবেন না অন্যথায় এটি একাধিক প্রাথমিক কী সম্পর্কে ত্রুটি দেয় (আপনি এটিটি কিছুটা বেশি চালাক হওয়ার প্রত্যাশা করতে পারেন এবং দেখতে পাবেন যে এটি একই প্রাথমিক কী) । সুতরাং সেই ক্ষেত্রে আপনি কেবল প্রাথমিক কীটি এড়িয়ে যান এবং এটি সেই কলামটিতে বিদ্যমান প্রাথমিক কী সেটিংসকে প্রভাবিত করে না
জর্জ বীরবিলিস

2

নীচে বিবৃতি কাজ করে। নোট করুন যে কলাম নামের জন্য আপনাকে আবার ডেটা টাইপ উল্লেখ করতে হবে (কলামটি আগে ছিল এমন ডেটা টাইপ পুনরায় ঘোষণা করুন)।

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

2

উপরের কোনও কাজই যদি এটিকে চেষ্টা না করে। আমি এমওয়াইএসকিউএলে এটি করেছি এবং হ্যাঁ, আপনাকে কলামের নাম (ডকুমেন্ট_আইডি) দুবার লিখতে হবে।

ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ;

1

মাইএসকিএল-তে কলামটি সংশোধন করতে আমরা কীওয়ার্ডগুলিকে পরিবর্তন এবং সংশোধন করি। মনে করুন আমরা একটি টেবিল তৈরি করেছি:

create table emp(
    id varchar(20),
    ename varchar(20),
    salary float
);

এখন আমরা স্বতঃবৃদ্ধির সাথে পূর্ণসংখ্যায় কলামের আইডির ধরণটি সংশোধন করতে চাই। আপনি যেমন একটি আদেশ দিয়ে এটি করতে পারে:

alter table emp modify column id int(10) auto_increment;

1

পূর্ববর্তী সারণী বাক্য গঠন:

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);

স্বতঃবৃদ্ধিতে ট্রানজেকশনআইড পরিবর্তন করার জন্য এই কোয়েরিটি ব্যবহার করুন

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;


1

ঠিক এই রকম:

alter table document modify column id int(11) auto_increment;


0

আপনি যখন আবার কলামটি নতুনভাবে সংজ্ঞায়িত করছেন, আপনাকে আবার ডেটাটাইপ নির্দিষ্ট করতে হবে এবং এটি ডেটাটাইপের অংশ হিসাবে স্বয়ংক্রিয় সংযোজন যুক্ত করতে হবে।

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

0

একইসাথে কলামটি প্রাথমিক কী এবং স্বতঃআগ্রহ হিসাবে সেট করা হচ্ছে:

  mysql> ALTER TABLE persons MODIFY COLUMN personID INT auto_increment PRIMARY KEY;
    Query OK, 10 rows affected (0.77 sec)
    Records: 10  Duplicates: 0  Warnings: 0

    mysql>

0

টেবিলের টেবিলের নাম পরিবর্তিত করুন মোডেফাই কলম আইডি ডেটাটাইপ স্বয়ংক্রিয়_সংশোধন;


-3

নিম্নলিখিত প্রশ্নগুলি ব্যবহার করুন:

ALTER TABLE YourTable DROP COLUMN IDCol

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