MySQL හි AUTO_INCREMENT යළි පිහිටුවන්නේ කෙසේද?


1265

මම කොහොමද හැකි නැවත සකස් වූ AUTO_INCREMENTකෙතක?
මට එය 1නැවත ගණන් කිරීම ආරම්භ කිරීමට අවශ්‍යයි .



82
ඔබට බොහෝ විට මේසය හිස් කිරීමට අවශ්‍ය වනු ඇත:TRUNCATE TABLE yourTableName;
Konerak


3
ඔව්, මේ අවස්ථාවේ දී කප්පාදු කිරීමේ වගුව වඩාත් සුදුසුය. එය ස්වයංක්‍රීය වර්ධක ආරම්භය 1 ට නැවත
සකසයි.

2
සමහර විට ඔබට DROP අවසර අවශ්‍ය බැවින් TRUNCATE කිරීමට අවසර නැත.
ලූක් ous ාති සහෝදරයා

Answers:


2056

ඔබට කවුන්ටරය නැවත සැකසිය හැක්කේ:

ALTER TABLE tablename AUTO_INCREMENT = 1

InnoDB සඳහා ඔබට auto_incrementඉහළම වත්මන් දර්ශකයට වඩා අඩු හෝ සමාන අගයක් සැකසිය නොහැක . ( ViralPatel වෙතින් උපුටා ගැනීම ):

ඔබට දැනටමත් භාවිතා කර ඇති ඕනෑම දෙයකට වඩා අඩු හෝ සමාන අගයකට කවුන්ටරය නැවත සැකසිය නොහැකි බව සලකන්න. MyISAM සඳහා, අගය දැනට AUTO_INCREMENT තීරුවේ ඇති උපරිම අගයට වඩා අඩු හෝ සමාන නම්, අගය වත්මන් උපරිම ප්ලස් වන් වෙත යලි සකසනු ලැබේ. InnoDB සඳහා, තීරුවේ වත්මන් උපරිම අගයට වඩා අගය අඩු නම්, කිසිදු දෝෂයක් සිදු නොවන අතර වත්මන් අනුක්‍රමික අගය වෙනස් නොවේ.

වෙනත් වගුවකින් MAX අගයක් භාවිතා කරමින් MySQL ස්වයංක්‍රීයව ප්‍රතිස්ථාපනය කරන්නේ කෙසේදැයි බලන්න. පිළිගත හැකි අගයක් ගතිකව ලබා ගන්නේ කෙසේද යන්න පිළිබඳව.


8
පුරවන ලද මේසයක් සඳහා මෙය සදහටම ගත හැකිය. මේ සමඟ ප්‍රවේශම් වන්න: stackoverflow.com/questions/2681869/…
BT

52
මෙයcircular reference
බෙස්නික්

5
ඔබ අදහස් කරන්නේ curcular referenceකුමක්ද?
නීල්ස්

73
MySQL විසින් එකම ව්‍යුහයක් සහ නව ස්වයංක්‍රීය_ප්‍රමාණ අගයක් සහිත නව වගුවක් නිර්මාණය කර මුල් වගුවෙන් සියලුම වාර්තා පිටපත් කර, මුල් පිටපත අතහැර නව එක නැවත නම් කරන්න. වගුව විශාල නම් මෙය නිෂ්පාදන පරිසරයට සැලකිය යුතු කාර්යසාධන බලපෑමක් (සහ තැටි අවකාශය) ඇති කළ හැකිය.
රොස්ටෝල්

6
ඔබට දැනටමත් AUTOINCREMENT තීරුවක් තිබේ නම් මෙම ඉහළ ඡන්දය දුන් පිළිතුර සැබවින්ම ක්‍රියාත්මක වේද? MySQL 5.1 ලියකියවිලි වලට අනුව: "ඔබට දැනටමත් භාවිතා කර ඇති ඕනෑම දෙයකට වඩා අඩු හෝ සමාන අගයකට කවුන්ටරය නැවත සැකසිය නොහැක. MyISAM සඳහා, අගය දැනට AUTO_INCREMENT තීරුවේ ඇති උපරිම අගයට වඩා අඩු හෝ සමාන නම්, අගය වත්මන් උපරිම ප්ලස් වන් වෙත යලි සකසනු ලැබේ. InnoDB සඳහා, තීරුවේ වත්මන් උපරිම අගයට වඩා අගය අඩු නම්, කිසිදු දෝෂයක් සිදු නොවන අතර වත්මන් අනුක්‍රමික අගය වෙනස් නොවේ. ස්වයංක්‍රීයකරණය 1 ට වඩා වැඩි නම් මෙහි කිසිවක් සිදු නොවන බවක් පෙනේ.
lreeder

161
ALTER TABLE tablename AUTO_INCREMENT = 1

8
ඔබගේ පිළිතුර සහ පෙර පිළිතුර අතර ඇති වෙනස කුමක්දැයි මට දැන ගැනීමට සලස්වන්න
ප්‍රවීන් ශ්‍රිනිවාසන්

32
RaPraveenSrinivasan කිසිදු වෙනසක් නැත, අපි ඒවා එකවරම එකතු කළෙමු
boobiq

82
පුද්ගලිකව, මම සිතන්නේ එය AUTO_INCREMENT ප්‍රශ්නයකට පිළිතුරු දෙකට සමගාමී
ision ට්ටනයක්

Ark මාක්ගෝල්ඩ්ෆේන් ඔව්!
ncomputers

82
SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

මම හිතන්නේ මේක ඒක කරයි කියලා


2
මෙම ප්‍රශ්නයට දැනටමත් සුදුසු පිළිතුරක් ඇත. තවද, ඔබ තීරුවේ ඇති UPDATEසියලුම අගයන් යාවත්කාලීන කරනු idඇත.
කර්මිත්

2
පවතින පේළි නැවත ඇණවුම් කරන බව OP හි සඳහන් නොවේ.
කර්මිත්

සම්පූර්ණ හා පරිපූර්ණ පිළිතුර. නමුත් මට සැකයක් තිබේ, අප නව අගයක් ඇතුළත් කරන විට එම අගයේ PK යනු කුමක්ද යන්න. එය 1 හෝ ඊළඟ පීකේ ද?
ප්‍රිෆුල්නාත්

ඔව්, මෙය හොඳම විසඳුමයි, නමුත් දත්ත ලියා ඇත්නම් ඔබට වගු අගුළු දැමීමට අවශ්‍ය විය හැකිය. උදා: නිෂ්පාදන වගු
wavvves

1 සමඟ ආරම්භ කිරීම සඳහා ස්වයංක්‍රීය වර්ධක යලි සකසා ගත යුතු එකම අවශ්‍යතාවය මට තිබුණි, පළමු විධාන දෙක පමණක් උපකාරී විය.
ලොකේන්ද්‍ර


40

රූප විස්තරය මෙහි ඇතුළත් කරන්න"මෙහෙයුම්" ටැබය යටතේ phpmyadmin සමඟ ඉතා පහසු ක්‍රමයක් ඇත, ඔබට වගු විකල්පයන්හි ඔබට අවශ්‍ය අංකයට ස්වයංක්‍රීයව සැකසිය හැකිය.


ඊට පසු ඔබ mysql සේවාව / සේවාදායකය නැවත ආරම්භ කළ යුතුය.
සයිබර්

1
ඊට පසු ඔබේ සේවාදායකය නැවත ආරම්භ කළ යුතු යැයි මම නොසිතමි. වර්ධක ආරම්භක ස්ථානය වෙනස් කිරීම සඳහා PhpAdmin විධානය ක්‍රියාත්මක කරයි.
කරීම්

ඔබට නැවත ආරම්භ කිරීමට අවශ්‍ය නැත, එය ඊළඟ ඇතුළු කිරීමෙන් ක්‍රියාත්මක වේ.
IlludiumPu36

36

මා වෙනුවෙන් වැඩ කළ හොඳම විසඳුම:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

එහි වේගවත්, අහිංසක ඩීබී සමඟ ක්‍රියා කරයි, සහ වර්තමාන උපරිම අගය දැන ගැනීමට මට අවශ්‍ය නැත! මේ ආකාරයෙන් ස්වයංක්‍රීය වර්ධක කවුන්ටරය නැවත සකසනු ඇති අතර එය පවතින උපරිම අගයෙන් ස්වයංක්‍රීයව ආරම්භ වේ.


1
එය තොරතුරු_චෙමා මත NULL ස්වයංක්‍රීය-ඉන්ක් අගය සකසනු ඇත; චෙක් පතSELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name = 'my_table' AND table_schema = DATABASE( ) ;
K-Gun

1
මම 5.6.x අනුවාදය මත පරීක්‍ෂා කළ අතර මෙය මනාව ක්‍රියාත්මක වූ අතර කෙරම් ගීනේගේ විමසුම මඟින් උපරිම අගය සහ ප්ලස් වන් ලබා දුන්නේය. (සමහර විට එය පළමු විමසුමෙන් පසු අහෝසි වීමට සකසා ඇත, නමුත් එය දෙවන විමසුමෙන් පසුව නොවේ) මෙය InnoDB සඳහා හොඳම විසඳුම යැයි මම විශ්වාස කරමි.
ෆ්‍රෑන්ක් ෆෝර්ට්

සැකසූ පැහැදිලි වටිනාකමට සමාන ය: "එකම ව්‍යුහයක් සහ නව ස්වයංක්‍රීය_ අගය සහිත නව වගුවක් සාදන්න සහ සියලු වාර්තා මුල් වගුවෙන් පිටපත් කර, මුල් පිටපත අතහැර නව එකක් නම් කරන්න. මෙය සැලකිය යුතු කාර්යසාධන බලපෑමක් ඇති කළ හැකිය (සහ තැටි අවකාශය) වගුව විශාල නම් නිෂ්පාදන පරිසරයන් මත. නමුත් වඩා නරක වන්නේ සම්පූර්ණ පිටපත් වගුව දෙවරක් අවශ්‍ය නිසාය.
එනිබි

මෙම අනුවාදය සඳහා ක්රියා කරන මම තහවුරු 5.6.15බැවින්ද, ALTER TABLE tablename AUTO_INCREMENT = 1කරන්නේ නැහැ .
නා

24

මෙම ප්‍රශ්නයට ඉහළම ශ්‍රේණිගත කළ පිළිතුරු සියල්ලම "ALTER yourtable AUTO_INCREMENT = අගය" නිර්දේශ කරයි. කෙසේ වෙතත්, මෙය ක්‍රියාත්මක වන්නේ valueස්වයංක්‍රීයව තීරුවේ වත්මන් උපරිම අගයට වඩා වෙනස් වූ විට පමණි . MySQL 8 ප්‍රලේඛනයට අනුව :

දැනට භාවිතයේ පවතින අගයට වඩා අඩු හෝ සමාන අගයකට ඔබට කවුන්ටරය නැවත සැකසිය නොහැක. InnoDB සහ MyISAM යන දෙකටම, අගය දැනට AUTO_INCREMENT තීරුවේ ඇති උපරිම අගයට වඩා අඩු හෝ සමාන නම්, අගය වත්මන් උපරිම AUTO_INCREMENT තීරු අගයට සහ එක් අගයකට යලි සකසනු ලැබේ.

සාරාංශයක් ලෙස, ඔබට ස්වයංක්‍රීයව තීරුවේ වටිනාකම වැඩි කිරීම සඳහා AUTO_INCREMENT වෙනස් කළ හැකි අතර එය 1 ට නැවත සකසන්න එපා, OP ප්‍රශ්නයේ දෙවන කොටසේ අසන පරිදි. AUTO_INCREMENT එහි වර්තමාන උපරිමයෙන් පහළට සැකසීමට ඔබට සැබවින්ම ඉඩ දෙන විකල්ප සඳහා, බලන්න නැවත සකසන්න / ස්වයංක්‍රීය වර්ධක ප්‍රාථමික යතුර නැවත සකසන්න .


20

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

මගේ පරීක්ෂණයෙන් පෙන්නුම් කරන්නේ වගුව පිටපත් කර නොමැති බවත්, වටිනාකම සරලව වෙනස් කර ඇති බවත්ය.


19

MySQL Autoincrement තීරුව නැවත සකසන්නේ කෙසේද යන්නෙහි හොඳ විකල්ප ඇත

InnoDB සඳහා ALTER TABLE tablename AUTO_INCREMENT = value;ක්‍රියා නොකරන සටහන


8
InnoDB සමඟ මෙය කරන්නේ කෙසේද?
හිස් අවි ගබඩාව

4
MySQL v 5.6.2 භාවිතා කරමින් මට හොඳින් ක්‍රියා කරයි
එඩී බී

මේසයකින් වාර්තා මකා දැමීමෙන් පසු ස්වයංක්‍රීයව සැකසීමේ ක්ෂේත්‍රයක් යළි පිහිටුවීමට නොහැකි වූ සමාන ගැටලුවක් මට තිබුණි. TRUNCATE වැඩ කර ඇති බව පෙනේ. ස්වයංක්‍රීයව ඉවත් කිරීම සහ නැවත අයදුම් කිරීම සඳහා පහත විසඳුම් මෙය සමනය කිරීමට උපකාරී වනු ඇතැයි මම සිතමි.
ක්‍රේග් මැලෝනි

Ra ක්‍රේග්මලෝනි - DELETE (හෝ ROLLBACK) නැවත ලබා නොගනී. එක් ව්‍යතිරේකයක්: නැවත ආරම්භ කිරීමෙන් පසු (හෝ බිඳ වැටීමෙන්), ඊළඟ හැඳුනුම්පත ගණනය කරනු ලබන අතර MAX(id)+1, අවසානයේදී මකාදැමූ අයිඩී effectively ලදායී ලෙස නැවත ලබා ගනී . ව්‍යතිරේකය හැර: MySQL 8.0 එම අයිඩී භාවිතයට නොගනී.
රික් ජේම්ස්

13
ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

මම මෙය මගේ සමහර ස්ක්‍රිප්ට් වල භාවිතා කළෙමි, හැඳුනුම් ක්ෂේත්‍රය අතහැර දමා පෙර සැකසුම් සමඟ එකතු කරනු ලැබේ, දත්ත සමුදා වගුව තුළ පවතින සියලුම ක්ෂේත්‍ර නව ස්වයංක්‍රීය වර්ධක අගයන්ගෙන් පුරවා ඇත, මෙය InnoDB සමඟද ක්‍රියා කළ යුතුය.

වගුව තුළ ඇති සියලුම ක්ෂේත්‍ර නැවත ගණනය කෙරෙන අතර වෙනත් අයිඩී ඇති බව සලකන්න !!!.


3
මම මේ වගේ දෙයක් ලබා ගැනීමට කැමතියි! නමුත් අමතර අනතුරු ඇඟවීමක් ලෙස; මෙය පැහැදිලිවම ඔබේ විදේශීය යතුරු සම්පූර්ණයෙන්ම බිඳ දමනු ඇත.
NoobishPro

12

ඔබට TRUNCATEමේ වගේ සින්ටැක්ස් වගුව භාවිතා කළ හැකිය : TRUNCATE TABLE table_name

පරෙස්සම් වන්න !! ඔබගේ සෑම දෙයක්ම මකාTRUNCATE TABLE your_table දමනු ඇත !!your_table


14
නව වැඩසටහන්, , දැනුවත් විය TRUNCATEකරනු ඇත ද ඔබේ පේළි delete සියලූම නිශ්චිත වගුවේ!
සැන්ෂින් 13

1
ඉහත අදහස පිළිතුරෙහි ඇතුළත් කළ යුතුය, නැතහොත් අවම වශයෙන් කප්පාදුවේ සත්‍ය භාවිතය පිළිබඳ පැහැදිලි කිරීමක් කළ යුතුය.
ලූකස් කෞස්

TRUNCATEauto_incrementක්ෂේත්‍ර ද නැවත සකසනු ඇත්ද? මගේ භාවිත නඩුව නම් වගුවේ ඇති පැරණි දත්ත ඉවත් කර නව දත්ත සඳහා හැඳුනුම්පත් 1 සිට නැවත ආරම්භ කිරීමයි (සිතන්න, පරීක්‍ෂණය අවසන් වූ පසු නිසි භාවිතය සඳහා වගුව ඉවත් කිරීම). මම හිතුවා මට DROPමුළු මේසයටම යන්න CREATEවෙනවා කියලා.
ADTC

ඔව්, TRUNCATE මේසය මත යළි පිහිටුවීමක් මෙන් ක්‍රියා කරයි. වගුවක් නිර්මාණය කිරීමෙන් පසු එය වෙනස් කර ඇත්නම් එය සම්පූර්ණයෙන්ම සත්‍ය නොවේ. එවිට එම වෙනස්කම් නැවත සැකසෙන්නේ නැත. වගු ව්‍යුහය අපනයනය කිරීමට සහ අපනයනය සැබෑ යළි පිහිටුවීමකට වඩා නව වගුවක් නිර්මාණය කිරීමට එය සමීප යැයි මම සිතමි.
ක්‍රිස්

ඔව් @ADTC. වත්මන් අගය තබා ගැනීමට ඔබට අවශ්‍ය නම් auto_increment, DELETE FROMඒ වෙනුවට භාවිතා කරන්න TRUNCATE.
TRiG

7

එය හිස් මේසයක් සඳහා ය:

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`);

මෙය භාවිතා කිරීමට සරලයි
අබ්දුල් අසීස් අල් බසීර්

මෙය දත්ත සමඟ අපට වැඩ කළේය. එය පේළිය ඊළඟ දර්ශකයට යළි පිහිටුවයි. ස්තූතියි!
ඩැසල් කරන්න


5

මෙන්න මගේ විසඳුම, නමුත් ඔබේ තීරුවට අවහිරතා තිබේ නම් හෝ වෙනත් වගු සමඟ විදේශීය යතුරක් ලෙස සම්බන්ධ වී ඇත්නම් එය නරක ප්‍රති 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

මෙය හොඳින් ක්‍රියාත්මක වේ!


3

MySQL 5.6 වන විට පහත දැක්වෙන ප්‍රවේශය මාර්ගගත ඩීඩීඑල් නිසා වේගයෙන් ක්‍රියාත්මක වේ (සටහන algorithm=inplace):

alter table tablename auto_increment=1, algorithm=inplace;



1

මම මේසය වෙනස් කිරීමට උත්සාහ කළ අතර auto_increment 1 ට සැකසූ නමුත් එය ක්‍රියාත්මක වූයේ නැත. මා වැඩි කරමින් සිටි තීරුවේ නම මකා දැමීමට මම තීරණය කළෙමි, ඉන්පසු ඔබ කැමති නමකින් නව තීරුවක් සාදා එම නව තීරුව ආරම්භයේ සිටම වැඩි කිරීමට සකසන්න.


ඔබ එය සිදු කළ ආකාරය පැහැදිලි කළ හැකිද?
MZaragoza

ZMZaragoza AI නොමැති පැරණි තීරුව අතහැර දමා AI සක්‍රීය කර ඇති නව එකක් සාදන්න.
andromeda

මෙය පෙන්වීමට ඔබේ පිළිතුර යාවත්කාලීන කළ හැකිද? මම එය ඇත්තෙන්ම අගය කරමි
MZaragoza

1

වගුවක් සඳහා ස්වයංක්‍රීය වර්ධක කවුන්ටරය (නැවත) ආකාර දෙකකින් සැකසිය හැකිය:

  1. දැනටමත් පැහැදිලි කර ඇති පරිදි, විමසුමක් ක්‍රියාත්මක කිරීමෙන්:

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  2. වර්ක්බෙන්ච් හෝ වෙනත් දෘශ්‍ය දත්ත සමුදා සැලසුම් මෙවලමක් භාවිතා කිරීම. මම එය කරන්නේ කෙසේදැයි වර්ක්බෙන්ච් හි පෙන්වන්නෙමි - නමුත් එය වෙනත් මෙවලමක ද වඩා වෙනස් නොවිය යුතුය. අපේක්ෂිත වගුව මත දකුණු ක්ලික් කර Alter tableසන්දර්භය මෙනුවෙන් තෝරා ගන්න . පතුලේ ඔබට වගුවක් වෙනස් කිරීම සඳහා ඇති සියලුම විකල්ප දැකිය හැකිය. තෝරන්න Options, ඔබට මෙම පෝරමය ලැබෙනු ඇත: රූප විස්තරය මෙහි ඇතුළත් කරන්න

    ඉන්පසු Auto incrementපින්තූරයේ පෙන්වා ඇති පරිදි ක්ෂේත්‍රයේ අපේක්ෂිත අගය සකසන්න . මෙය මූලික වශයෙන් පළමු විකල්පයේ පෙන්වා ඇති විමසුම ක්‍රියාත්මක කරනු ඇත.



0

නවතම ප්ලස් වන් හැඳුනුම්පත යාවත්කාලීන කිරීමට

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);


0

මම ගූගල් කර මෙම ප්‍රශ්නය සොයා ගත්තෙමි, නමුත් මම සැබවින්ම සොයන පිළිතුර නිර්ණායක දෙකක් සපුරාලයි:

  1. තනිකරම MySQL විමසුම් භාවිතා කිරීම
  2. පවතින වගුවේ ස්වයංක්‍රීය වර්ධකය උපරිම (id) + 1 වෙත නැවත සකසන්න

මට මෙහි අවශ්‍ය දේ හරියටම සොයාගත නොහැකි වූ නිසා, මම විවිධ පිළිතුරු වලින් පිළිතුර ලබාගෙන එය මෙහි බෙදා ගනිමි.

සැලකිල්ලට ගත යුතු කරුණු කිහිපයක්:

  1. ප්‍රශ්නයේ වගුව InnoDB වේ
  2. වගුව ප්‍රාථමික යතුර ලෙස idවර්ගය සහිත ක්ෂේත්‍රය භාවිතා කරයිint
  3. MySQL හි මෙය තනිකරම කළ හැකි එකම ක්‍රමය වන්නේ ගබඩා කළ ක්‍රියා පටිපාටියයි
  4. පහත මගේ පින්තූර GUI ලෙස SequelPro භාවිතා කරයි. ඔබ කැමති MySQL සංස්කාරකය මත පදනම්ව එය අනුවර්තනය කිරීමට ඔබට හැකි විය යුතුය
  5. ඩෙබියන්-ලිනක්ස්-ග්නු සඳහා මම මෙය MySQL Ver 14.14 බෙදාහැරීම 5.5.61 හි පරීක්ෂා කර ඇත්තෙමි

පියවර 1: ගබඩා කළ පටිපාටිය සාදන්න

මේ ආකාරයට ගබඩා කළ ක්‍රියා පටිපාටියක් සාදන්න:

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 ;

ඉන්පසු එය ක්රියාත්මක කරන්න.

ධාවනය වීමට පෙර, ඔබේ දත්ත ගබඩාවේ ගබඩා කර ඇති ක්‍රියා පටිපාටි යටතේ බැලූ විට මෙය පෙනේ.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

මම ධාවනය වන විට, මම ගබඩා කර ඇති ක්‍රියා පටිපාටිය තෝරාගෙන ධාවන තේරීම ඔබන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

සටහන: පරිසීමක කොටස ඉතා වැදගත් වේ. එබැවින් ඔබ මෙම ප්‍රශ්නයේ ඉහළින් තෝරාගත් පිළිතුරු වලින් පිටපත් කර අලවන්නේ නම්, ඔවුන් මෙම හේතුව නිසා ක්‍රියා නොකරයි.

මම ධාවනය කිරීමෙන් පසු, ගබඩා කළ ක්රියා පටිපාටිය මම දැකිය යුතුය

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ඔබට ගබඩා කළ ක්‍රියා පටිපාටිය වෙනස් කිරීමට අවශ්‍ය නම්, ගබඩා කළ ක්‍රියා පටිපාටිය මකා දැමිය යුතුය, ඉන්පසු නැවත ක්‍රියාත්මක කිරීමට තෝරන්න.

පියවර 2: ගබඩා කළ පටිපාටිය අමතන්න

මෙවර ඔබට සාමාන්‍ය MySQL විමසුම් භාවිතා කළ හැකිය.

call reset_autoincrement('products');

මුලින් https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc හි ඇති මගේම SQL විමසුම් සටහන් වලින් සහ StackOverflow සඳහා අනුවර්තනය කරන ලදි


-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;

-2

විමසුම් බ්‍රව්සරයට ගොස් පහත සඳහන් දේ කිරීමට මම ඔබට යෝජනා කරමි:

  1. Schemata වෙත ගොස් ඔබට වෙනස් කිරීමට අවශ්‍ය වගුව සොයා ගන්න.
  2. රයිට් ක්ලික් කර පිටපත් සාදන්න ප්‍රකාශය තෝරන්න.
  3. ප්‍රති result ල පටිත්තක් විවෘත කර ඒවායේ නිර්මාණ ප්‍රකාශය අලවන්න.
  4. සාදන ප්‍රකාශයේ අවසාන පේළියට ගොස් Auto_Increment = N, (මෙහි N යනු ස්වයංක්‍රීය_ක්‍රීම් ක්ෂේත්‍රය සඳහා වත්මන් අංකයකි.)
  5. N 1 සමඟ ප්රතිස්ථාපනය කරන්න.
  6. ctrl+enter ඔබන්න .

ඔබ මේසය තුළට නව පේළියක් ඇතුළත් කළ පසු ස්වයංක්‍රීය_ප්‍රතිසංස්කරණය එකකට යළි පිහිටුවිය යුතුය.

ස්වයංක්‍රීය_ප්‍රතිසංස්කරණ ක්ෂේත්‍ර වටිනාකමක් දැනටමත් පවතින පේළියක් එක් කිරීමට ඔබ උත්සාහ කළහොත් කුමක් සිදුවේදැයි මම නොදනිමි.

මෙම උපකාරය බලාපොරොත්තු වේ!


-2

හොඳම ක්‍රමය වන්නේ AI සමඟ ක්ෂේත්‍රය ඉවත් කර AI සමඟ නැවත එක් කිරීමයි, සියලු වගු සඳහා ක්‍රියා කරයි


1
හොඳම ක්‍රමය නොවේ, තීරුවක් දැමීමෙන් තීරු දත්ත නැති වේ
දීෂා ගෝයාල්

හොඳයි, ඔබට එය කෙසේ හෝ ප්‍රතිසංස්කරණය කිරීමට අවශ්‍යයි, @ ඩිෂා ගෝයාල්.
mckenzm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.