আমি কিভাবে করতে রিসেটAUTO_INCREMENT
একটি ক্ষেত্রের?
আমি এটি 1
আবার থেকে গণনা শুরু করতে চান ।
TRUNCATE TABLE yourTableName;
আমি কিভাবে করতে রিসেটAUTO_INCREMENT
একটি ক্ষেত্রের?
আমি এটি 1
আবার থেকে গণনা শুরু করতে চান ।
TRUNCATE TABLE yourTableName;
উত্তর:
আপনি এর সাথে কাউন্টারটি পুনরায় সেট করতে পারেন:
ALTER TABLE tablename AUTO_INCREMENT = 1
InnoDB- এর জন্য আপনি auto_increment
মানটি বর্তমানের বর্তমান সূচকের চেয়ে কম বা সমান সেট করতে পারবেন না । ( ভাইরালপ্যাটেলের উদ্ধৃতি ):
নোট করুন যে আপনি ইতিমধ্যে ব্যবহৃত হয়েছে তার চেয়ে কম বা সমান মানতে কাউন্টারটিকে পুনরায় সেট করতে পারবেন না। মাইআইএসএএম এর জন্য, মানটি বর্তমানে অটোপ্রেমসেন্ট কলামে সর্বাধিক মানের চেয়ে কম বা সমান হলে মানটি বর্তমানের সর্বোচ্চ প্লাস একটিতে পুনরায় সেট করা হয় reset InnoDB- এর জন্য, মানটি কলামে বর্তমান সর্বাধিক মানের চেয়ে কম হলে কোনও ত্রুটি ঘটে না এবং বর্তমান ক্রম মানটি পরিবর্তন করা হয় না।
অন্য টেবিল থেকে একটি ম্যাক্স মান ব্যবহার করে একটি মাইএসকিউএল অটোআইক্রেনমেন্ট কীভাবে পুনরায় সেট করবেন দেখুন ? কীভাবে গতিশীলভাবে একটি গ্রহণযোগ্য মান পাবেন on
circular reference
curcular reference
?
ALTER TABLE tablename AUTO_INCREMENT = 1
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
আমি মনে করি এটি এটি করবে
UPDATE
সমস্ত মান আপডেট করা হবে id
।
কেবল এই মত:
ALTER TABLE tablename AUTO_INCREMENT = value;
তথ্যসূত্র: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
reset
এর অর্থ এটি ডিফল্ট
"অপারেশনস" ট্যাবের অধীনে পিএইচপিএমইডমিন সহ একটি খুব সহজ উপায় রয়েছে, আপনি সারণী বিকল্পগুলিতে, নিজের পছন্দ মতো সংখ্যায় স্বনির্ধারণ করতে পারেন।
আমার পক্ষে সবচেয়ে ভাল সমাধানটি কাজ করেছে:
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;
এর দ্রুত, নির্দোষ ডিবি এর সাথে কাজ করে এবং আমার বর্তমান সর্বাধিক মান জানার দরকার নেই! এইভাবে অটো ইনক্রিমেন্ট কাউন্টারটি পুনরায় সেট হবে এবং এটি সর্বাধিক মান বিদ্যমান থেকে স্বয়ংক্রিয়ভাবে শুরু হবে।
SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
5.6.15
, যেখানে না । ALTER TABLE tablename AUTO_INCREMENT = 1
এই প্রশ্নের সর্বাধিক রেট দেওয়া উত্তরগুলি সমস্তই "আপনার নিজের টেবিল AUTO_INCREMENT = মান" বাছাইয়ের প্রস্তাব দেয়। যাইহোক, এটি কেবল তখনই কাজ করে যখন value
অলটারে স্বতঃসংশোধনের কলামের বর্তমান সর্বাধিক মানের চেয়ে বেশি হয়। মাইএসকিউএল 8 ডকুমেন্টেশন অনুসারে :
আপনি বর্তমানে ব্যবহার করা মানের চেয়ে কম বা সমান কোনও মানটিতে কাউন্টারটিকে পুনরায় সেট করতে পারবেন না। ইনোডিবি এবং মাইআইএসএএম উভয়ের জন্য, যদি মানটি বর্তমানে অটোপ্রেমেন্ট কলামে সর্বাধিক মানের চেয়ে কম বা সমান হয় তবে মানটি বর্তমান সর্বাধিক AUTO_INCREMENT কলাম মান প্লাস ওয়ানটিতে পুনরায় সেট করা হয়।
সংক্ষেপে, ওপি প্রশ্নের দ্বিতীয় অংশে যেমন জিজ্ঞাসা করে, আপনি কেবলমাত্র স্বতঃসংশোধের কলামটির মান বাড়ানোর জন্য এটি AUTO_INCREMENT পরিবর্তন করতে পারবেন 1 অপশনগুলির জন্য যা আপনাকে প্রকৃতপক্ষে বর্তমানের সর্বোচ্চ থেকে অটোপরিবর্তনকে নীচের দিকে সেট করতে দেয়, পুনরায় অর্ডার / পুনরায় সেট করুন স্বয়ংক্রিয় বর্ধিত প্রাথমিক কীটি একবার দেখুন ।
মাইএসকিউএল 5.6 এ কার্যকারিতা পরিবর্তিত হওয়ায় একটি আপডেট যুক্ত করা হচ্ছে। মাইএসকিউএল ৫. of অনুসারে আপনি ইনোডিবি'র সাথে সাধারণ বিকল্প টেবিলে ব্যবহার করতে পারেন:
ALTER TABLE tablename AUTO_INCREMENT = 1;
এটি প্রতিফলিত করতে ডক্স আপডেট করা হয়েছে:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
আমার পরীক্ষাটি আরও দেখায় যে টেবিলটি অনুলিপি করা হয়নি, মানটি সহজেই পরিবর্তিত হয়েছে।
মাইএসকিউএল অটোয়েনক্রিমেন্ট কলাম কীভাবে রিসেট করা যায় তার জন্য এখানে ভাল বিকল্প দেওয়া আছে
নোট যে InnoDB এর জন্য কাজ ALTER TABLE tablename AUTO_INCREMENT = value;
করে না
DELETE
(বা ROLLBACK
) আইডি পুনরুদ্ধার করবে না। একটি ব্যতিক্রম: পুনঃসূচনা (বা ক্র্যাশ) পরে, পরবর্তী আইডি গণনা করা হয় MAX(id)+1
, ফলস্বরূপ কার্যকরভাবে শেষে মোছা আইডিগুলি পুনরুদ্ধার করা । ব্যতিক্রম ব্যতীত: মাইএসকিউএল 8.0 এই আইডিগুলিকে অব্যবহৃত রাখে।
ALTER TABLE news_feed DROP id
ALTER TABLE news_feed ADD id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)
আমি এটি আমার কয়েকটি স্ক্রিপ্টগুলিতে ব্যবহার করেছি, আইডি ফিল্ডটি ফেলে দেওয়া হয় এবং তারপরে পূর্ববর্তী সেটিংস সহ আবার যুক্ত করা হয়, ডাটাবেস টেবিলের মধ্যে থাকা সমস্ত বিদ্যমান ক্ষেত্রগুলি নতুন অটো ইনক্রিমেন্ট মান সহ পূর্ণ হয়, এটিও InnoDB এর সাথে কাজ করা উচিত।
নোট করুন যে টেবিলের মধ্যে থাকা সমস্ত ক্ষেত্রগুলি পুনরায় গণনা করা হবে এবং এতে অন্যান্য আইডি থাকবে !!!
আপনি সিনট্যাক্স TRUNCATE
টেবিলটি এর মতো ব্যবহার করতে পারেন :
TRUNCATE TABLE table_name
সাবধান থাকুন !! আপনার সবকিছু মুছেTRUNCATE TABLE your_table
ফেলবে !!your_table
TRUNCATE
ফেলবে !
TRUNCATE
auto_increment
ক্ষেত্রগুলিও আবার রিসেট করবে ? আমার ব্যবহারের ক্ষেত্রেটি হ'ল টেবিলের পুরানো ডেটা সাফ করা এবং নতুন ডেটার জন্য আবার 1 থেকে আইডি শুরু করা (কল্পনা করুন, পরীক্ষার পরে সঠিক ব্যবহারের জন্য টেবিল সাফ করার পরে)। আমি ভেবেছিলাম আমার আবার DROP
পুরো টেবিলটি রাখা উচিত CREATE
।
auto_increment
ব্যবহার DELETE FROM
করুন TRUNCATE
।
এটি খালি টেবিলের জন্য:
ALTER TABLE `table_name` AUTO_INCREMENT = 1;
আপনার যদি ডেটা থাকে তবে আপনি এটি পরিষ্কার করতে চান, আমি এটি ব্যবহার করার পরামর্শ দিচ্ছি:
ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);
এখানে আমার সমাধানটি দেওয়া আছে, তবে যদি আপনার কলামে বাধা থাকে বা অন্য টেবিলের সাথে বিদেশী কী হিসাবে সংযুক্ত থাকে তবে এর খারাপ প্রভাব ফেলবে বা এমনকি কাজ করবে না আমি এগুলি করার পরামর্শ দেব না।
ALTER TABLE tbl_name DROP COLUMN column_id
ALTER TABLE tbl_access ADD COLUMN `access_id` int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST
এটি ভাল কাজ করে!
মাইএসকিউএল 5.6 হিসাবে অনলাইন ডিডিএল (নোট algorithm=inplace
) এর কারণে নীচের পদ্ধতিটি দ্রুত কাজ করে :
alter table tablename auto_increment=1, algorithm=inplace;
ক্রমটি পুনরায় সেট করতে আপনি কেবল টেবিলটি ছাঁটাই করতে পারেন
TRUNCATE TABLE TABLE_NAME
আমি টেবিলটি পরিবর্তন করার চেষ্টা করেছি এবং 1-এ অটো_সিত্ত্র সেট করেছিলাম তবে এটি কার্যকর হয়নি। আমি কলামের নামটি বৃদ্ধি করার জন্য মুছে ফেলার সংকল্প করেছি, তারপরে আপনার পছন্দসই নামটি দিয়ে একটি নতুন কলাম তৈরি করুন এবং সেই নতুন কলামটি শুরু থেকে বাড়ানোর জন্য সেট করুন।
কোনও টেবিলের জন্য অটো ইনক্রিমেন্ট কাউন্টারটি দুটি উপায়ে সেট করা যেতে পারে:
অন্যদের মতো ইতিমধ্যে ব্যাখ্যা করা মতো একটি কোয়েরি কার্যকর করে:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
ওয়ার্কবেঞ্চ বা অন্যান্য ভিজ্যুয়াল ডাটাবেস ডিজাইন সরঞ্জাম ব্যবহার করে। এটি কীভাবে হয় তা আমি ওয়ার্কবেঞ্চে প্রদর্শন করব - তবে এটি অন্য সরঞ্জামেও আলাদা হওয়া উচিত নয়। পছন্দসই টেবিলের উপর ডান ক্লিক করে Alter table
প্রসঙ্গ মেনু থেকে চয়ন করুন । নীচে আপনি একটি টেবিল পরিবর্তন করার জন্য সমস্ত উপলভ্য বিকল্প দেখতে পাবেন। চয়ন করুন Options
এবং আপনি এই ফর্ম পাবেন:
তারপরে Auto increment
চিত্রটিতে প্রদর্শিত ক্ষেত্রটিতে কেবল পছন্দসই মানটি সেট করুন । এটি মূলত প্রথম বিকল্পটিতে প্রদর্শিত ক্যোয়ারিকে সম্পাদন করবে।
সর্বশেষ প্লাস ওয়ান আইডি আপডেট করতে
ALTER TABLE table_name AUTO_INCREMENT =
(SELECT (id+1) id FROM table_name order by id desc limit 1);
টেবিলের টেবিলের নাম পরিবর্তন করুন আউটপুট ক্রিমেন্ট = 1
আমি এই প্রশ্নটি গুগল করেছিলাম এবং খুঁজে পেয়েছি তবে আমি যে উত্তরটি সত্যই খুঁজছি তা দুটি মানদণ্ড পূরণ করে:
যেহেতু আমি এখানে যা চাই ঠিক তা পাই না, তাই আমি বিভিন্ন উত্তর থেকে উত্তরটি এখানে আটকিয়ে রেখেছি।
কয়েকটি বিষয় লক্ষণীয়:
id
যেমন ধরনের সঙ্গে int
প্রাথমিক কী হিসাবেএটির মতো একটি সঞ্চিত পদ্ধতি তৈরি করুন:
DELIMITER //
CREATE PROCEDURE reset_autoincrement(IN tablename varchar(200))
BEGIN
SET @get_next_inc = CONCAT('SELECT @next_inc := max(id) + 1 FROM ',tablename,';');
PREPARE stmt FROM @get_next_inc;
EXECUTE stmt;
SELECT @next_inc AS result;
DEALLOCATE PREPARE stmt;
set @alter_statement = concat('ALTER TABLE ', tablename, ' AUTO_INCREMENT = ', @next_inc, ';');
PREPARE stmt FROM @alter_statement;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
তারপর এটি চালান।
রান করার আগে, আপনি যখন আপনার ডাটাবেসে সঞ্চিত প্রক্রিয়াগুলির অধীনে দেখেন তখন এমনটি দেখাবে।
আমি যখন রান করি তখন আমি সঞ্চিত পদ্ধতিটি নির্বাচন করি এবং রান সিলেকশনটি চাপতাম
দ্রষ্টব্য: সীমাবদ্ধকারী অংশটি গুরুত্বপূর্ণ। সুতরাং আপনি যদি এই প্রশ্নের শীর্ষ নির্বাচিত উত্তরগুলি অনুলিপি করে আটকান, তবে তারা এই কারণে কাজ করতে চান না।
আমি চালানোর পরে, আমার সঞ্চিত পদ্ধতিটি দেখতে হবে
আপনার যদি সঞ্চিত পদ্ধতি পরিবর্তন করতে হয় তবে আপনার সঞ্চিত পদ্ধতিটি মুছতে হবে, তারপরে আবার চালনার জন্য নির্বাচন করুন।
এবার আপনি সাধারণ মাইএসকিউএল কোয়েরিগুলি সহজভাবে ব্যবহার করতে পারেন।
call reset_autoincrement('products');
মূলত https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc এ আমার নিজস্ব এসকিউএল কোয়েরি নোটগুলি থেকে এবং স্ট্যাকওভারফ্লোতে রূপান্তরিত
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
রান এই দ্য কোয়েরি চেষ্টা করুন
ALTER TABLE tablename AUTO_INCREMENT = value;
অথবা রিসেট অটো বর্ধনের জন্য এই প্রশ্নের চেষ্টা করুন
ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL;
এবং অটো বর্ধন সেট করুন তারপরে এই ক্যোয়ারি চালান
ALTER TABLE `tablename` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
আমি আপনাকে পরামর্শ ব্রাউজারে গিয়ে নিম্নলিখিতগুলি করার পরামর্শ দিচ্ছি:
আপনি একবার সারণিতে নতুন সারিটি প্রবেশ করানোর পরে অটো_সামগ্রীটিকে একটিতে পুনরায় সেট করা উচিত।
আমি জানি না যে আপনি যদি একটি সারি যুক্ত করার চেষ্টা করেন যেখানে একটি অটো_সংশোধন ক্ষেত্রের মানটি ইতিমধ্যে বিদ্যমান।
এই সাহায্য আশা করি!
সেরা উপায় হ'ল এআই সহ ফিল্ডটি সরিয়ে ফেলা এবং এআই সহ এটি আবার যুক্ত করা, সমস্ত টেবিলের জন্য কাজ করে