نحوه ریست مقادیر ستون Identity در SQL
"ستون Identity " چیست؟
ستون Identity جدول ستونی است که مقدار آن به طور خودکار افزایش می یابد. یک کاربر معمولاً نمی تواند مقداری را در ستون هویت وارد کند. یک جدول می تواند تنها یک ستون داشته باشد که با اتریبیوت Identity تعریف شده است.
Syntax : IDENTITY [ ( seed , increment ) ] |
💡مقدار پیش فرض هویت IDENTITY (1،1) است.
Seed: دانه نشان دهنده مقدار شروع یک ID است و مقدار پیش فرض seed 1 است.
Increment: مقدار افزایشی ID را نشان می دهد و مقدار پیش فرض افزایش 1 است.
مثلا :
مرحله 1: جدولی به نام مدرسه ایجاد کنید.
CREATE TABLE school (
id INT IDENTITY,
student_name VARCHAR(200),
marks INT
);
در اینجا، ستون "student_id" جدول از 1 شروع می شود زیرا مقدار پیش فرض seed 1 است و هر ردیف 1 افزایش می یابد.
مرحله 2: مقداری را در جدول وارد کنید.
INSERT INTO school (student_name, marks) VALUES ('Sahil', 100);
INSERT INTO school (student_name, marks) VALUES ('Raj', 78);
INSERT INTO school (student_name, marks) VALUES ('Navneet', 80);
INSERT INTO school (student_name, marks) VALUES ('Rahul', 75);
INSERT INTO school (student_name, marks) VALUES ('Sudeep', 82);
INSERT INTO school (student_name, marks) VALUES ('Azaan', 75);
مرحله 3: برای مشاهده رکوردهای جدول 'school' می توانیم از کد زیر استفاده کنیم:
SELECT * FROM school;
id | student_name | marks |
---|---|---|
1 | Sahil | 100 |
2 | Raj | 78 |
3 | Navneet | 80 |
4 | Rahul | 75 |
5 | Sudeep | 82 |
6 | Azaan | 75 |
مرحله 4: اجازه می دهیم رکوردها را حذف کنیم.
DELETE FROM school;
حالا اگر یه رکورد جدید insert کنید میبینید که Id آن برابر 7 خواهد بود (با اینکه از قبل هیچ رکوردی در جدول وجود ندارد و میشد ID از 1 شروع شود)
id | student_name | marks |
---|---|---|
7 | NewTestValue | 220 |
برای اینکه Id رکوردهای جدید از 1 شروع شود باید دستور زیر را اجرا کنید
DBCC CHECKIDENT ('school', RESEED, 0);
💡اگر جدول ما داری رکورد باشد و رکوردهای موجود در جدول را ریست کنیم , در این صورت موقع insert کردن رکوردهای جدیدی ، به خطا برمیخوریم. برای رفع این مشکل: -یک جدول جدید به عنوان پشتیبان از جدول اصلی (یعنی مدرسه) ایجاد کنید. |