මම කොහොමද හැකි නැවත සකස් වූ AUTO_INCREMENT
කෙතක?
මට එය 1
නැවත ගණන් කිරීම ආරම්භ කිරීමට අවශ්යයි .
TRUNCATE TABLE yourTableName;
මම කොහොමද හැකි නැවත සකස් වූ AUTO_INCREMENT
කෙතක?
මට එය 1
නැවත ගණන් කිරීම ආරම්භ කිරීමට අවශ්යයි .
TRUNCATE TABLE yourTableName;
Answers:
ඔබට කවුන්ටරය නැවත සැකසිය හැක්කේ:
ALTER TABLE tablename AUTO_INCREMENT = 1
InnoDB සඳහා ඔබට auto_increment
ඉහළම වත්මන් දර්ශකයට වඩා අඩු හෝ සමාන අගයක් සැකසිය නොහැක . ( ViralPatel වෙතින් උපුටා ගැනීම ):
ඔබට දැනටමත් භාවිතා කර ඇති ඕනෑම දෙයකට වඩා අඩු හෝ සමාන අගයකට කවුන්ටරය නැවත සැකසිය නොහැකි බව සලකන්න. MyISAM සඳහා, අගය දැනට AUTO_INCREMENT තීරුවේ ඇති උපරිම අගයට වඩා අඩු හෝ සමාන නම්, අගය වත්මන් උපරිම ප්ලස් වන් වෙත යලි සකසනු ලැබේ. InnoDB සඳහා, තීරුවේ වත්මන් උපරිම අගයට වඩා අගය අඩු නම්, කිසිදු දෝෂයක් සිදු නොවන අතර වත්මන් අනුක්රමික අගය වෙනස් නොවේ.
වෙනත් වගුවකින් MAX අගයක් භාවිතා කරමින් MySQL ස්වයංක්රීයව ප්රතිස්ථාපනය කරන්නේ කෙසේදැයි බලන්න. පිළිගත හැකි අගයක් ගතිකව ලබා ගන්නේ කෙසේද යන්න පිළිබඳව.
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
එය පෙරනිමි අගයට
"මෙහෙයුම්" ටැබය යටතේ phpmyadmin සමඟ ඉතා පහසු ක්රමයක් ඇත, ඔබට වගු විකල්පයන්හි ඔබට අවශ්ය අංකයට ස්වයංක්රීයව සැකසිය හැකිය.
මා වෙනුවෙන් වැඩ කළ හොඳම විසඳුම:
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
කරන්නේ නැහැ .
මෙම ප්රශ්නයට ඉහළම ශ්රේණිගත කළ පිළිතුරු සියල්ලම "ALTER yourtable AUTO_INCREMENT = අගය" නිර්දේශ කරයි. කෙසේ වෙතත්, මෙය ක්රියාත්මක වන්නේ value
ස්වයංක්රීයව තීරුවේ වත්මන් උපරිම අගයට වඩා වෙනස් වූ විට පමණි . MySQL 8 ප්රලේඛනයට අනුව :
දැනට භාවිතයේ පවතින අගයට වඩා අඩු හෝ සමාන අගයකට ඔබට කවුන්ටරය නැවත සැකසිය නොහැක. InnoDB සහ MyISAM යන දෙකටම, අගය දැනට AUTO_INCREMENT තීරුවේ ඇති උපරිම අගයට වඩා අඩු හෝ සමාන නම්, අගය වත්මන් උපරිම AUTO_INCREMENT තීරු අගයට සහ එක් අගයකට යලි සකසනු ලැබේ.
සාරාංශයක් ලෙස, ඔබට ස්වයංක්රීයව තීරුවේ වටිනාකම වැඩි කිරීම සඳහා AUTO_INCREMENT වෙනස් කළ හැකි අතර එය 1 ට නැවත සකසන්න එපා, OP ප්රශ්නයේ දෙවන කොටසේ අසන පරිදි. AUTO_INCREMENT එහි වර්තමාන උපරිමයෙන් පහළට සැකසීමට ඔබට සැබවින්ම ඉඩ දෙන විකල්ප සඳහා, බලන්න නැවත සකසන්න / ස්වයංක්රීය වර්ධක ප්රාථමික යතුර නැවත සකසන්න .
MySQL 5.6 හි ක්රියාකාරීත්වය වෙනස් වී ඇති නිසා යාවත්කාලීනයක් එක් කිරීම. MySQL 5.6 වන විට ඔබට InnoDB සමඟ සරල ALTER TABLE භාවිතා කළ හැකිය:
ALTER TABLE tablename AUTO_INCREMENT = 1;
මෙය පිළිබිඹු කිරීම සඳහා ලියකියවිලි යාවත්කාලීන කර ඇත:
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html
මගේ පරීක්ෂණයෙන් පෙන්නුම් කරන්නේ වගුව පිටපත් කර නොමැති බවත්, වටිනාකම සරලව වෙනස් කර ඇති බවත්ය.
MySQL Autoincrement තීරුව නැවත සකසන්නේ කෙසේද යන්නෙහි හොඳ විකල්ප ඇත
InnoDB සඳහා ALTER TABLE tablename AUTO_INCREMENT = value;
ක්රියා නොකරන සටහන
DELETE
(හෝ ROLLBACK
) නැවත ලබා නොගනී. එක් ව්යතිරේකයක්: නැවත ආරම්භ කිරීමෙන් පසු (හෝ බිඳ වැටීමෙන්), ඊළඟ හැඳුනුම්පත ගණනය කරනු ලබන අතර MAX(id)+1
, අවසානයේදී මකාදැමූ අයිඩී effectively ලදායී ලෙස නැවත ලබා ගනී . ව්යතිරේකය හැර: MySQL 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
කරනු ඇත ද ඔබේ පේළි delete සියලූම නිශ්චිත වගුවේ!
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`);
මෙන්න මගේ විසඳුම, නමුත් ඔබේ තීරුවට අවහිරතා තිබේ නම් හෝ වෙනත් වගු සමඟ විදේශීය යතුරක් ලෙස සම්බන්ධ වී ඇත්නම් එය නරක ප්රති effects ල ඇති කරයි හෝ ක්රියා නොකරනු ඇත.
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
මෙය හොඳින් ක්රියාත්මක වේ!
MySQL 5.6 වන විට පහත දැක්වෙන ප්රවේශය මාර්ගගත ඩීඩීඑල් නිසා වේගයෙන් ක්රියාත්මක වේ (සටහන algorithm=inplace
):
alter table tablename auto_increment=1, algorithm=inplace;
අනුක්රමය නැවත සැකසීමට ඔබට වගුව කපා දැමිය හැකිය
TRUNCATE TABLE TABLE_NAME
මම මේසය වෙනස් කිරීමට උත්සාහ කළ අතර auto_increment 1 ට සැකසූ නමුත් එය ක්රියාත්මක වූයේ නැත. මා වැඩි කරමින් සිටි තීරුවේ නම මකා දැමීමට මම තීරණය කළෙමි, ඉන්පසු ඔබ කැමති නමකින් නව තීරුවක් සාදා එම නව තීරුව ආරම්භයේ සිටම වැඩි කිරීමට සකසන්න.
වගුවක් සඳහා ස්වයංක්රීය වර්ධක කවුන්ටරය (නැවත) ආකාර දෙකකින් සැකසිය හැකිය:
දැනටමත් පැහැදිලි කර ඇති පරිදි, විමසුමක් ක්රියාත්මක කිරීමෙන්:
ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;
වර්ක්බෙන්ච් හෝ වෙනත් දෘශ්ය දත්ත සමුදා සැලසුම් මෙවලමක් භාවිතා කිරීම. මම එය කරන්නේ කෙසේදැයි වර්ක්බෙන්ච් හි පෙන්වන්නෙමි - නමුත් එය වෙනත් මෙවලමක ද වඩා වෙනස් නොවිය යුතුය. අපේක්ෂිත වගුව මත දකුණු ක්ලික් කර Alter table
සන්දර්භය මෙනුවෙන් තෝරා ගන්න . පතුලේ ඔබට වගුවක් වෙනස් කිරීම සඳහා ඇති සියලුම විකල්ප දැකිය හැකිය. තෝරන්න Options
, ඔබට මෙම පෝරමය ලැබෙනු ඇත:
ඉන්පසු Auto increment
පින්තූරයේ පෙන්වා ඇති පරිදි ක්ෂේත්රයේ අපේක්ෂිත අගය සකසන්න . මෙය මූලික වශයෙන් පළමු විකල්පයේ පෙන්වා ඇති විමසුම ක්රියාත්මක කරනු ඇත.
SET @num := 0;
UPDATE your_table SET id = @num := (@num+1);
ALTER TABLE your_table AUTO_INCREMENT =1;
නවතම ප්ලස් වන් හැඳුනුම්පත යාවත්කාලීන කිරීමට
ALTER TABLE table_name AUTO_INCREMENT =
(SELECT (id+1) id FROM table_name order by id desc limit 1);
වෙනත් වගු වගුවේ නම AUTO_INCREMENT = 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 ;
ඉන්පසු එය ක්රියාත්මක කරන්න.
ධාවනය වීමට පෙර, ඔබේ දත්ත ගබඩාවේ ගබඩා කර ඇති ක්රියා පටිපාටි යටතේ බැලූ විට මෙය පෙනේ.
මම ධාවනය වන විට, මම ගබඩා කර ඇති ක්රියා පටිපාටිය තෝරාගෙන ධාවන තේරීම ඔබන්න
සටහන: පරිසීමක කොටස ඉතා වැදගත් වේ. එබැවින් ඔබ මෙම ප්රශ්නයේ ඉහළින් තෝරාගත් පිළිතුරු වලින් පිටපත් කර අලවන්නේ නම්, ඔවුන් මෙම හේතුව නිසා ක්රියා නොකරයි.
මම ධාවනය කිරීමෙන් පසු, ගබඩා කළ ක්රියා පටිපාටිය මම දැකිය යුතුය
ඔබට ගබඩා කළ ක්රියා පටිපාටිය වෙනස් කිරීමට අවශ්ය නම්, ගබඩා කළ ක්රියා පටිපාටිය මකා දැමිය යුතුය, ඉන්පසු නැවත ක්රියාත්මක කිරීමට තෝරන්න.
මෙවර ඔබට සාමාන්ය MySQL විමසුම් භාවිතා කළ හැකිය.
call reset_autoincrement('products');
මුලින් https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc හි ඇති මගේම SQL විමසුම් සටහන් වලින් සහ StackOverflow සඳහා අනුවර්තනය කරන ලදි
මෙම විමසුම ක්රියාත්මක කිරීමට උත්සාහ කරන්න
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;
විමසුම් බ්රව්සරයට ගොස් පහත සඳහන් දේ කිරීමට මම ඔබට යෝජනා කරමි:
ඔබ මේසය තුළට නව පේළියක් ඇතුළත් කළ පසු ස්වයංක්රීය_ප්රතිසංස්කරණය එකකට යළි පිහිටුවිය යුතුය.
ස්වයංක්රීය_ප්රතිසංස්කරණ ක්ෂේත්ර වටිනාකමක් දැනටමත් පවතින පේළියක් එක් කිරීමට ඔබ උත්සාහ කළහොත් කුමක් සිදුවේදැයි මම නොදනිමි.
මෙම උපකාරය බලාපොරොත්තු වේ!
හොඳම ක්රමය වන්නේ AI සමඟ ක්ෂේත්රය ඉවත් කර AI සමඟ නැවත එක් කිරීමයි, සියලු වගු සඳහා ක්රියා කරයි