MySQL AUTO_INCREMENT කියන්නේ කුමක්ද? එය පරීක්ෂා කිරීම, සකස් කිරීම සහ නැවත සකස් කිරීම (සම්පූර්ණ මාර්ගෝපදේශය)

目次

MySQL AUTO_INCREMENT යනු කුමක්ද?

AUTO_INCREMENT හි මූලික කරුණු

MySQL හි, AUTO_INCREMENT යනු දත්ත සමුදා වගුවක සංඛ්‍යාත්මක අගයන් ස්වයංක්‍රීයව වැඩි කරන විශේෂාංගයකි. එය සාමාන්‍යයෙන් ප්‍රාථමික යතුරක් (PRIMARY KEY) ලෙස භාවිතා කරයි, නව පේළියක් ඇතුළත් කරන සෑම වරක්ම අනුක්‍රමික අංක ස්වයංක්‍රීයව නියම කරයි—ID එක අතින් සඳහන් නොකර.

AUTO_INCREMENT හි ප්‍රධාන භාවිතා

  • ස්වයංක්‍රීය සාමාජික ID ජනනය : පරිශීලකයෙක් ලියාපදිංචි වන විට අද්විතීය ID එකක් නියම කරයි
  • ඇණවුම් අංක කළමනාකරණය : සෑම ඇණවුමකටම ස්වයංක්‍රීයව අංකයක් නියම කරයි
  • නිෂ්පාදන කේත නියම කිරීම : නිෂ්පාදන සඳහා අද්විතීය හඳුනාගැනීමේ අංකයක් ලෙස භාවිතා වේ

AUTO_INCREMENT නිසි ලෙස භාවිතා කිරීමෙන්, ඔබට දත්ත අද්විතීයභාවය රැකගෙන පරිපාලන පණිවිඩය අඩු කළ හැක.

MySQL හි AUTO_INCREMENT අගය පරීක්ෂා කිරීමේ ක්‍රමය [3 SQL Commands]

ක්‍රමය 1: SHOW TABLE STATUS භාවිතා කිරීම

SHOW TABLE STATUS LIKE 'table_name';

ඔබ මෙම විධානය ක්‍රියාත්මක කරන විට, වත්මන් AUTO_INCREMENT අගය Auto_increment තීරුවේ පෙන්වයි.

ක්‍රමය 2: INFORMATION_SCHEMA.TABLES වෙතින් ලබා ගැනීම

SELECT AUTO_INCREMENT FROM information_schema.tables 
WHERE table_schema = 'database_name' AND table_name = 'table_name';

මෙම ක්‍රමය ඔබට ඉලක්ක වගුව සඳහා සකස් කර ඇති AUTO_INCREMENT අගය සෘජුව ලබා ගැනීමට ඉඩ සලසයි.

ක්‍රමය 3: SHOW CREATE TABLE භාවිතා කිරීම

SHOW CREATE TABLE table_name;

ඔබ මෙම විධානය ක්‍රියාත්මක කරන විට, වගුව නිර්මාණ DDL (දත්ත නිර්වචන භාෂාව) පෙන්වයි, එහි AUTO_INCREMENT සැකසුම ඇතුළත් වේ.

AUTO_INCREMENT සකස් කිරීම සහ වෙනස් කිරීම

නව වගුවක් නිර්මාණය කරන විට AUTO_INCREMENT සකස් කිරීම

නව වගුවක් නිර්මාණය කරන විට AUTO_INCREMENT සමඟ තීරුවක් නිර්වචනය කිරීමට, පහත SQL භාවිතා කරන්න:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
);

පවතින වගුවක AUTO_INCREMENT අගය වෙනස් කිරීම

පවතින වගුවක AUTO_INCREMENT අගය වෙනස් කිරීමට අවශ්‍ය නම්, පහත විධානය භාවිතා කරන්න:

ALTER TABLE users AUTO_INCREMENT = 1000;

මෙම විධානය ක්‍රියාත්මක කිරීමෙන් පසු, ඊළඟ ඇතුළත් කරන ලද රෙකෝඩ් ID 1000 සිට ආරම්භ වේ.

AUTO_INCREMENT වැඩිවීමේ අගය වෙනස් කිරීම (MySQL 8.0 හෝ පසුගිය සංස්කරණය)

පෙරනිමියෙන්, AUTO_INCREMENT අගය 1කින් වැඩි වේ. එහෙත්, අවශ්‍ය නම් වැඩිවීමේ අගය වෙනස් කළ හැක.

SET @@auto_increment_increment = 5;

මෙම සැකසුම සමඟ, AUTO_INCREMENT අගය සෑම වරක්ම 5කින් වැඩි වේ (උදා: 1, 6, 11, …).

AUTO_INCREMENT භාවිතා කිරීමේ වැදගත් සටහන් [Prevent Data Issues]

AUTO_INCREMENT හි උපරිම අග සීමාව

AUTO_INCREMENT හි උපරිම අගය තීරුවේ දත්ත වර්ගය මත පදනම් වේ. උදාහරණයක් ලෙස, INT වර්ගය භාවිතා කරන විට, උපරිම අගය 2,147,483,647 වේ. මෙම සීමාව ඉක්මවා ගියහොත්, නව ID ගණනක් ජනනය කළ නොහැකිවී දෝෂයක් සිදුවේ.

විධානයන්

  • BIGINT භාවිතා කර විශාල අගයන්ට සහය දක්වන්න
  • අවශ්‍ය විට දත්ත සංරක්ෂණය හෝ යළි සකස් කිරීම ගැන සිතන්න

දත්ත මකා දැමීමෙන් පසු AUTO_INCREMENT හැසිරීම

MySQL හි, රෙකෝඩ් මකා දැමීම AUTO_INCREMENT අගය ස්වයංක්‍රීයව යළි සකස් නොකරයි.

DELETE FROM users WHERE id = 100;

මෙම ආකාරයෙන් විශේෂ ID එකක් මකා දැමුවත්, ඊළඟ ඇතුළත් කරන අගය වත්මන් ගණකයෙන් පසු යළි භාවිතා නොකර දිගටම යයි.

යළි සකස් කිරීමේ ක්‍රමය
TRUNCATE TABLE භාවිතා කිරීමෙන් සියලු දත්ත මකා දමා AUTO_INCREMENT අගය යළි සකස් කරයි.

TRUNCATE TABLE users;

මෙම ක්‍රියාවලිය සිදු කිරීමෙන් පසු, ඊළඟ ඇතුළත් කරන ID එක 1 සිට නැවත ආරම්භ වේ.

ගනුදෙනු සහ AUTO_INCREMENT

MySQL හි, ගනුදෙනුවක් ROLLBACK (පසුපසට) කරාත් AUTO_INCREMENT අගය පසුපසට නොයයි.

START TRANSACTION;
INSERT INTO users (name) VALUES ('Alice');
ROLLBACK;

මෙම අවස්ථාවේ, දත්ත ඇතුළත් නොවුවත්, AUTO_INCREMENT අගය වැඩිවී පවතී. එමනිසා ID අංක අතර හිස් ඉඩක් ඇති විය හැක.

නිතර අසන ප්‍රශ්න (FAQ)

Q1: AUTO_INCREMENT අගයන් කවදාවත් හිස් ඉඩක් ඇති වන්නේ ඇයි?

A: සංඛ්‍යාවන් INSERT කිරීමක් පසු ROLLBACK කිරීමෙන් පසු නැවත සකස් නොවීම නිසාය. මකාදැමීම් සහ අසාර්ථක ඇතුළත් කිරීම්ද හිස් ඉඩක් ඇති කරයි.

Q2: AUTO_INCREMENT අගය නැවත සකස් කිරීම කෙසේද?

A: TRUNCATE TABLE table_name; ක්‍රියාත්මක කර එය නැවත සකස් කරන්න.

Q3: වත්මන් AUTO_INCREMENT අගය පරීක්ෂා කිරීම කෙසේද?

A: SHOW TABLE STATUS භාවිතා කරන්න හෝ INFORMATION_SCHEMA.TABLES විමසන්න.

Q4: AUTO_INCREMENT උපරිම අගය ඉක්මවා ගියහොත් කුමක් වේද?

A: එය INT හි උපරිම අගය ඉක්මවා ගත්තාම දෝෂයක් සිදුවේ. ඔබට තීරුවේ වර්ගය BIGINT ලෙස වෙනස් කළ යුතුය.