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


103

এটি আমি চেষ্টা করেছিলাম কিন্তু এটি ব্যর্থ হয়:

alter table goods add column `id` int(10) unsigned primary AUTO_INCREMENT;

কারও কাছে টিপস আছে?


11
যখন কোনও কিছু ব্যর্থ হয় , ব্যর্থতার অর্থ কী তা নির্দিষ্ট করে দেওয়া সর্বদা একটি ভাল ধারণা : আপনি কি একটি ত্রুটি বার্তা পান? কোনটি ?
পাস্কাল মার্টিন

আমার ধারণা ত্রুটি বার্তাটি দেখতে দেখতে: একাধিক প্রাথমিক কী সংজ্ঞায়িত করা হয়েছে
এলএমডি

উত্তর:


226

কলামটি যুক্ত করার পরে, আপনি সর্বদা প্রাথমিক কী যুক্ত করতে পারেন:

ALTER TABLE goods ADD PRIMARY KEY(id)

আপনার স্ক্রিপ্টটি কেন কাজ করছে না, আপনাকে PRIMARY KEYকেবল শব্দটি নয়, নির্দিষ্ট করতে হবে PRIMARY:

alter table goods add column `id` int(10) unsigned primary KEY AUTO_INCREMENT;

আমার জন্য এটি বলে: এটি একাধিক প্রাথমিক কীগুলি সংজ্ঞায়িত করবে। আমি ইনোডিবি ব্যবহার করছি। নোট আমি ইতিমধ্যে তাদের 3 আছে।
এলএমডি

2
আমি অবশ্যই FIRSTপরে রাখব AUTO_INCREMENTযার অর্থ idইতিমধ্যে বিদ্যমান সারণীর প্রথম কলাম হবে। অন্যথায় এটি এখন যেমন লেখা আছে সারণীর শেষের দিকে রাখা হবে, যা সহজ করার সময় কিছুটা বিভ্রান্ত হতে পারেSELECT * ...
স্টেফানকে

নতুন 'আইডি' কলামে কীভাবে প্রথম স্থান পাবেন
টিপভাইজার

17

বিদ্যমান কলাম

আপনি যদি বিদ্যমান কলামে প্রাথমিক কী বাধা যুক্ত করতে চান তবে পূর্ববর্তী তালিকাভুক্ত সমস্ত সিনট্যাক্স ব্যর্থ হবে।

বিদ্যমান কলামে একটি প্রাথমিক কী বাধা যুক্ত করতে ফর্মটি ব্যবহার করুন:

ALTER TABLE `goods`
MODIFY COLUMN `id` INT(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT;

1
মাইএসকিএল মোডিফাইকে যথাযথ বিবৃতি হিসাবে স্বীকৃতি দেয় না (কমপক্ষে এক্সএএমপিপি, ইনোডিবি)
এলএমডি

@ এলএমডি আপনি মাইএসকিএলের কোন সংস্করণ চালু করছেন? (দ্রষ্টব্য: আমি জানি যে এটি পোস্ট করার সময় এটি কাজ করেছিল এবং আমি বিশ্বাস করি এটি 5.6 ছিল ... তবে আমি নিশ্চিত মনে করতে পারি না)
এমইআর

1
যদি আপনার কাছে, আমার মতো, এটি পরিবর্তনের পরিবর্তে মোডিফাইয়ের কাজ করে না এবং এটি কাজ করবে!
সিএসআর-ননটল

12

যদি আপনার টেবিলটি বেশ বড় হয় তবে বিবৃতিটি ব্যবহার না করে:

alter table goods add column `id` int(10) unsigned primary KEY AUTO_INCREMENT;

কারণ এটি অস্থায়ী সারণীতে সমস্ত ডেটার একটি অনুলিপি তৈরি করে, সারণী পরিবর্তন করে এবং তারপরে এটি অনুলিপি করে। ম্যানুয়ালি এটি করা ভাল। আপনার টেবিলটির নতুন নাম দিন:

rename table goods to goods_old;

প্রাথমিক কী এবং সমস্ত প্রয়োজনীয় সূচী সহ নতুন টেবিল তৈরি করুন:

create table goods (
    id  int(10) unsigned not null AUTO_INCREMENT
    ... other columns ...
    primary key (id)
);

পুরানো টেবিল থেকে সমস্ত তথ্য নতুনতে সরান, অনুলিপি কী এবং সূচি অনুলিপি করার জন্য:

- মাইসাম টেবিলগুলির জন্য এটি ব্যবহার করুন :

SET UNIQUE_CHECKS=0;
    ALTER TABLE goods DISABLE KEYS;
        INSERT INTO goods (... your column names ...) SELECT ... your column names FROM goods_old; 
    ALTER TABLE goods ENABLE KEYS;
SET UNIQUE_CHECKS=1;

অথবা

- এটি ইনোডিবি ট্যাবলেটের জন্য ব্যবহার করুন :

SET AUTOCOMMIT = 0; SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0;
    INSERT INTO goods (... your column names ...) SELECT ... your column names FROM goods_old; 
SET FOREIGN_KEY_CHECKS=1; SET UNIQUE_CHECKS=1; COMMIT; SET AUTOCOMMIT = 1;

200 মিলিয়ন পাউন্ড সারি সহ কোনও টেবিলে পিকে যোগ করতে 2 000 সেকেন্ড সময় লাগে।


এই উত্তরটি খুঁজতে আমার কতক্ষণ অনুসন্ধান করা দরকার তা অবাক করেছিলাম। এই সহায়ক উদাহরণগুলির জন্য ধন্যবাদ।
রায়ান

4

এই বিষয়টি অন্য কারও কাছে নিশ্চিত কিনা তা নিশ্চিত নই, তবে আমি ডাটাবেসের প্রথম কলামে আইডি টেবিলটি পছন্দ করি। এর জন্য বাক্য গঠনটি হ'ল:

ALTER TABLE your_db.your_table ADD COLUMN `id` int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT FIRST;

যা প্রথম উত্তরের তুলনায় সামান্য উন্নতি। আপনি যদি এটি অন্যরকম অবস্থানে থাকতে চান তবে

ALTER TABLE unique_address ADD COLUMN `id` int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT AFTER some_other_column;

এইচটিএইচ, -ফুট



2

এই কোডটি আমার মাইএসকিএল ডিবিতে কাজ করে:

ALTER TABLE `goods`
ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`id`);


0

এটা চেষ্টা কর,

alter table goods add column `id` int(10) unsigned primary key auto_increment

0

আমার জন্য, প্রস্তাবগুলির কোনওটিই আমাকে সিনট্যাক্সের ত্রুটিগুলি প্রদানে কাজ করেনি, তাই আমি কেবল phpmyadmin (সংস্করণ 4.9.2), (10.4.10-মারিয়াডিবি) ব্যবহার করে এবং idস্বয়ংক্রিয় বর্ধিত প্রাথমিক কী সহ কলাম যুক্ত করেছি । Idপ্রথম উপাদান থেকে কলামটি সুন্দরভাবে যুক্ত করা হয়েছিল।

অনুসন্ধান আউটপুট ছিল:

টেবিলের মধ্যে প্রথমে table_nameনূতন স্বয়ংক্রিয় idক্রিমেন্ট না যোগ করুন, প্রাথমিক কী ( id) যুক্ত করুন;


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