گاهی اوقات هنگام ساخت جدول لازم است یک فیلد وجود داشته باشد تا مقادیر آن بصورت خودکار پر شود و تکراری هم نباشد. در این آموزش با مقدار دهی خودکار در Sql بصورت کامل آشنا خواهید شد. در آموزش بعدی ساخت جدول در Sql را یاد خواهید گرفت. در آموزش قبلی نحوه ساخت دیتابیس را یاد گرفتید.

افزایش خودکار یک فیلد در Sql
برای اینکه مقدار دهی خودکار در Sql انجام شود باید یک فیلد از نوع عدد صحیح را بصورت identity تعریف کرد. در این حالت برنامهنویس حق مقداردهی به این فیلد را بصورت پیش فرض ندارد. مقادیر این فیلد بصورت پیش فرض از یک شروع شده و به میزان یک واحد افزایش داده میشود. البته امکان مشخص کردن عدد شروع و میزان افزایش وجود دارد.
در طول عمر جدول، مقدار Identity تکرار نخواهد شد یعنی اگر کد 5 تولید شود و حتی کد 5 حذف شود هرگز کد 5 به رکوردهای بعدی اختصاص داده نمیشود. در واقع فیلد Identity دارای دو مشخصه است یکی اینکه بدون تکرار است یعنی هیچ موقع مقادیر تکراری اختصاص نمیدهد و دوم اینکه روند رشد اعداد بصورت صعودی است و همیشه عدد رکورد بعدی ار رکوردهای قبلی بزرگتر است. جهت تعریف فیلد بصورت Indentity مقابل فیلد عدد صحیح عبارت ” Indentity” را قرار دهید.
PersonId int Identity
در حالت فوق بصورت پیش فرض مقادیر از یک اختصاص داده میشود و به میزان یک عدد افزایش مییابد برای تغییر عدد شروع و میزان افزایش باید این مقادیر را داخل پرانتز بصورت زیر مشخص کنید. (عدد اول، مقدار شروع و عدد دوم میزان افزایش اعداد را مشخص میکند)
PersonId int Identity(20,2) مقدار شروع 20 است و دو تا دو تا افزایش پیدا میکند 20، 22، 24 و ...
اگر یک جدول Truncate شود با توجه به نحوه عملکرد دستور Truncate که در واقع جدول جدید میسازد مقداردهی فیلد Identity از ابتدا شروع میشود.

دستور identity در Sql
گاهی اوقات بنا به شرایط لازم است مقدار دهی خودکار در Sql برای یک فیلد انجام نشود و فیلد Identity در هنگام درج اطلاعات مقداردهی شود و بصورت اتومات این اتفاق نیافتد برای اینکار باید دستور زیر را قبل از دستور درج اطلاعات قرار دهید.
set identity_insert نام جدول مورد نظر on بطور مثال set identity_insert person on
پس از درج اطلاعات موردنظر با دستور زیر امکان درج عدد در فیلد Identity را قطع کنید تا مجدد از این به بعد بصورت خودکار مقداردهی انجام شود و امکان درج مقدار بصورت دستی نباشد.
set identity_insert نام جدول مورد نظر off بطور مثال set identity_insert person off