SQL AUTO INCREMENT Field

در SQL از AUTO INCREMENT برای تولید خودکار مقادیر عددی در هر ردیف جدید استفاده می‌کنیم.
این ویژگی معمولاً برای ستون‌های کلید اصلی (PRIMARY KEY) استفاده میشه تا نیازی به وارد کردن دستی مقدار نداشته باشیم.

🔹 مفهوم کلی

وقتی ستونی به‌صورت AUTO INCREMENT تعریف میشه، با هر INSERT جدید مقدارش به‌طور خودکار یکی افزایش پیدا می‌کنه.
یعنی رکورد اول مقدار ۱ می‌گیره، رکورد دوم ۲، و به همین ترتیب.

🔹 در MySQL

CREATE TABLE Students ( StudentID INT AUTO_INCREMENT, FullName VARCHAR(100), PRIMARY KEY (StudentID) );

📌 توضیح:
ستون StudentID به‌صورت خودکار مقدار جدید تولید می‌کنه.

✅ درج داده

INSERT INTO Students (FullName) VALUES ('Ali Rezaei'), ('Sara Ahmadi');

📌 مقدار StudentID به ترتیب ۱ و ۲ میشه، بدون اینکه ما واردش کنیم.

🔹 در SQL Server

در SQL Server از کلیدواژه‌ی IDENTITY استفاده می‌کنیم:

CREATE TABLE Students ( StudentID INT IDENTITY(1,1) PRIMARY KEY, FullName VARCHAR(100) );

📌 توضیح:

  • عدد اول (1,1) یعنی مقدار اولیه 1 و گام افزایش 1 هست.

  • مثلاً رکوردها مقدار ۱، ۲، ۳ و ... می‌گیرن.

🔹 در PostgreSQL

دو روش رایج داره:

CREATE TABLE Students ( StudentID SERIAL PRIMARY KEY, FullName VARCHAR(100) );

یا با نسخه جدیدتر (SQL Standard):

CREATE TABLE Students ( StudentID INT GENERATED ALWAYS AS IDENTITY, FullName VARCHAR(100) );

🔹 بازیابی مقدار آخرین رکورد افزوده‌شده

بعد از درج داده، می‌تونیم مقدار آخرین ID تولیدشده رو بگیریم:

  • MySQL:

    SELECT LAST_INSERT_ID();
  • SQL Server:

    SELECT SCOPE_IDENTITY();
  • PostgreSQL:

    SELECT currval(pg_get_serial_sequence('students', 'studentid'));

🔹 نکات مهم

  • فقط یک ستون در هر جدول می‌تونه AUTO INCREMENT باشه.

  • مقدارش همیشه یکتا و صعودی است (مگر دستی تغییرش بدی).

  • برای بازنشانی مقدار (ریست ID)، می‌تونی از دستور ALTER TABLE استفاده کنی.