محدودیت Unique در SQL Server
محدودیت Unique منحصر به فرد بودن همه مقادیر را تضمین می کند طوری که هیچ مقدار تکراری در ستونی از جدول وارد نمی شود.
محدودیت های Unique را می توان با استفاده از CREATE یا ALTER TABLE T-SQL ایجاد کرد. در دستور CREATE TABLE پس از تعاریف ستون ها، محدودیت های Unique را اضافه کنید.
دستور CREATE TABLE زیر محدودیت کلیدی Unique را در ستون PhoneNo جدول Employee تعریف می کند.
دستور ALTER TABLE زیر یک محدودیت Unique را به ستون PhoneNo جدول Employee موجود اضافه می کند.
حال اگر بخواهید رکوردی را در جدول Employee درج یا به روز کنید جایی که Phone در محدوده مشخص شده قرار ندارد، خطای زیر ایجاد می شود.
Violation of UNIQUE KEY constraint 'UNQ_Emp_Phone'. Cannot insert duplicate key in object 'dbo.Employee'. The duplicate key value is (123.123.1834). The statement has been terminated.
نکات مهم:
1 - هر دو محدودیت Unique و محدودیت Primary key منحصر به فرد بودن را اعمال می کنند. توصیه می شود هر زمان که می خواهید منحصر به فرد بودن را در یک ستون اعمال کنید، به جای محدودیت کلید اصلی (Primary key) از محدودیت Unique استفاده کنید.
2 - بر خلاف محدودیت کلید اصلی ، محدودیت های Unique فقط یک مقدار NULL را مجاز می کند.
3 - هنگامی که یک محدودیت کلیدی Unique ایجاد می شود، یک ایندکس منحصر به فرد به طور خودکار ایجاد می شود.
4 - هر زمان که یک مقدار تکراری درج یا به روز شود، SQL Server یک خطا ایجاد می کند.
5 - هنگامی که یک ایندکس Unique به یک ستون موجود در جدول اضافه می شود، موتور پایگاه داده (database engine) ابتدا منحصر به فرد بودن داده های ستون مشخص شده را بررسی می کند. اگر یک ورودی تکراری یافت شود، موتور یک خطا را برمی گرداند و محدودیت را اضافه نمی کند.
6 - یک کلید منحصر به فرد (Unique key) در یک جدول را می توان با یک کلید خارجی از جدول دیگر ارجاع داد.
ایجاد محدودیت Unique با استفاده از SSMS
مرحله 1 : SSMS را باز کنید، به یک پایگاه داده وارد شوید. در Object Explorer، پوشه جدول را باز کنید و روی جدولی که می خواهید یک محدودیت Unique اضافه کنید، راست کلیک کنید و Design را انتخاب کنید تا آن در یک طراح جدول (table designer) باز شود.
اکنون روی طراح جدول کلیک راست کرده و Indexes/Keys را انتخاب کنید، همانطور که در زیر نشان داده شده است.
مرحله 2 : در کادر محاوره ای "Indexes/Keys"، ستون PhoneNo را در Columns property انتخاب کنید.
در مرحله بعد نوع Unique Key را انتخاب کنید تا محدودیت کلید منحصر به فرد روی ستون PhoneNo اعمال شود.
مرحله 3: نام محدودیت را در ویژگی name وارد کنید.
روی Close کلیک کنید و جدول را ذخیره کنید.
بنابراین، شما می توانید یک محدودیت unique key را روی یک ستون در یک جدول ایجاد کنید.
حذف محدودیت Unique Key
از دستور DROP CONSTRAINT در عبارت ALTER TABLE برای حذف محدودیت های منحصر به فرد موجود استفاده کنید.
آنچه که در زیر می بینید محدودیت کلید منحصر به فرد UNQ_Emp_Phone را از جدول Employee حذف می کند.
برای حذف محدودیت ها با استفاده از SQL Server Management Studio، جدولی را که محدودیت از آن حذف می شود گسترش دهید.
اکنون پوشه Keys را باز کنید و روی محدودیت مورد نظر کلیک راست کنید تا حذف شود و روی Delete کلیک کنید.
این کادر محاوره ای "Delete Object" را باز می کند، همانطور که در زیر نشان داده شده است.
در کادر محاوره ای "Delete Object" روی Ok کلیک کنید تا یک محدودیت حذف شود.