گاهی اوقات پیش می آید که می خواهیم یک فیلد از جدولی را طوری تنظیم کنیم که امکان ثبت مقدار تکراری در آن نباشد. مثلا اگر شما فیلدی بنام کد ملی داشته باشید، طبیعی است که نباید اجازه بدهید کد ملی تکراری وارد جدول شما بشود. در این آموزش در جدول ما فیلد کد ملی وجود ندارد، اما می خواهیم از فیلد شماره موبایل برای این منظور استفاده نماییم.
ابتدا وارد محیط اس کیو ال سرور ۲۰۱۶ شوید و مشابه تصویر زیر جدولتان را در حالت ویرایش فیلدها باز کنید.
برای شروع ابتدا تیک گزینه Allow Nulls را برای فیلد شماره موبایل (MobileNumber) بردارید.
با این کار اول مطمئن می شویم که کاربر نمی تواند از وارد کردن شماره موبایل صرفنظر کند و حتما باید مقداری را برای آن مشخص کند. حالا می خواهیم مطمئن شویم که کاربر نمی تواند شماره موبایل تکراری در جدول وارد کند. برای این کار اس کیو ال سرور مکانیزمی دارد با نام ایندکس (Index).
البته ایندکس ها در اس کیو ال سرور کاربردهای دیگری هم دارند که به مرور با سایر کاربردهایشان نیز آشنا خواهیم شد، اما در اینجا از یک کاربرد خاصشان استفاده می کنیم و آن کاربرد یکتایی (Unique Key) می باشد.
ابتدا در محیط ویرایش جدول بر روی یک قسمت خالی از صفحه راست کلیک کنید و از منوی ظاهر شده گزینه Indexes/Keys را انتخاب کنید.
کادر محاوره ای Indexes/Keys مشابه تصویر زیر ظاهر می شود. در این کادر بر روی دکمه Add کلیک کنید.
مشابه تصویر زیر یک گزینه به پنجره سمت چپ اضافه می شود که بصورت پیش فرض نام IX_phoneBook نام دارد. بر روی آن کلیک کنید تا در حالت انتخاب قرار گیرد. (وقتی در حالت انتخاب قرار گیرد رنگ آن آبی می شود)
حالا در قسمت سمت چپ گزینه Columns را انتخاب کنید و بر روی دکمه مقابل آن که علامت […] دارد کلیک کنید.
کادر محاوره ای Index Column ظاهر می شود.
در قسمت Column Name فیلد MobileNumber را انتخاب کنید و بر روی دکمه OK کلیک کنید.
تاثیر انتخاب شما در تصویر زیر نمایش داده شده است.
حالا در قسمت Type گزینه Unique Key را انتخاب کنید و سپس بر روی دکمه Close کلیک کنید. تصویر زیر راهنمای شما می باشد.
حالا مشابه تصویر زیر از منوی File گزینه Save PhoneBook را انتخاب کنید تا تغییرات شما ذخیره شوند.
کار معرفی فیلد یکتا خاتمه یافت. در ادامه به تست آن می پردازیم.
ابتدا با استفاده از گزینه Edit Top 200 rows که طی آموزشهای قبلی نیز دیدید، وارد محیط ویرایش داده های جدول شوید.
مشابه مقادیری که ما در تصویر زیر وارد کرده ایم، شما هم یک ردیف جدید ایجاد کنید. در فیلد شماره موبایل دقیقا همان شماره موبایلی را وارد کنید که در ردیف ۲ وارد شده است. حالا کلید Enter در صفحه کلید را بفشارید.
همانطور که خودتان هم می بینید، اس کیو ال سرور اجازه ثبت اطلاعات را به شما نمی دهد و با پیغام خطا مواجه می شوید. در این پیغام خطا (اگر با دقت به آن نگاه کنید) هم نام ایندکس ما که برای یکتایی شماره موبایل معرفی کردیم آمده است و هم شماره موبایل تکراری ما نیز در متن خطا موجود است.
برای رفع اشکال بر روی Ok کلیک کنید و مقدار شماره موبایل را به ۰۹۱۲۴۴۴۴۴۴۵ تغییر بدهید. حالا مجددا Enter کنید. اطلاعات بدون اشکال اضافه می شوند.
پس با این حساب، شما می توانید با استفاده از ویژگی ایندکس های یکتا، جلوی ثبت اطلاعات تکراری در جداول را نیز بگیرید.
کاری از سینا آموز
منبع خوش آموز