🎁 تخفیف ویژه دوره های آموزشی 🎁

محدودیت Check در SQL Server

در SQL Server ، محدودیت check برای تعیین محدودیت روی مقادیر یک ستون هنگام درج یا به‌روزرسانی استفاده می‌شود.

محدودیت Check در SQL Server

محدودیت Check در SQL Server

در SQL Server ، محدودیت بررسی یا چک کردن (check constraint) برای تعیین محدودیت روی مقادیر یک ستون هنگام درج یا به روزرسانی استفاده می شود.

به عنوان مثال، اگر ستونی به مقدار تاریخ در محدوده خاصی نیاز دارد، یا یک مقدار باید در قالب خاصی باشد، از check constraint استفاده کنید. مثلاً مقدار در ستون zip_code باید 5 رقمی باشد.

محدودیت های Check در SQL Server

محدودیت های Check را می توان با CREATE یا ALTER TABLE T-SQL ایجاد کرد. در دستور CREATE TABLE، محدودیت های check را بعد از تعریف همه ستون ها اضافه کنید.

دستور CREATE TABLE زیر یک محدودیت check روی ستون حقوق (Salary) جدول Employee تعریف می کند.

محدودیت های Check در SQL Server

دستور ALTER TABLE زیر یک محدودیت check بر روی ستون حقوق و دستمزد جدول Employee اضافه می کند که در آن مقادیر باید برای عبارت بولی Salary > 2000 AND Salary < 4000 به صورت True ارزیابی شوند.

محدودیت های Check در SQL Server

حال اگر بخواهید رکوردی را در جدول Employee درج یا به روز کنید که در آن حقوق در محدوده مشخص شده نباشد، خطای زیر ایجاد می شود.

The INSERT statement conflicted with the CHECK constraint "CHK_Emp_Salary". The conflict occurred in database "HR", table "dbo.Employee", column 'Salary'. The statement has been terminated.

نکات مهم زیر را به خاطر بسپارید:

1 - یک محدودیت check را می توان با هر Boolean منطقی ایجاد کرد که بر اساس عملگرهای منطقی True یا False را برمی گرداند. به عنوان مثال، عبارت بولین Salary > 2000 and Salary < 4000 مشخص می کند که مقدار در ستون حقوق باید بیشتر از 2000 و کمتر از 4000 باشد.

2 - یک عبارت بولی محدودیت check می تواند از چندین ستون استفاده کند.

3 - یک ستون منفرد می تواند دارای چندین محدودیت check باشد.

4 - محدودیت های check، مقادیری که به صورت False ارزیابی می شوند را رد می کند. اگر بخواهید مقداری را خارج از محدوده مقدار محدودیت check وارد کنید، موتور SQL خطایی می دهد که نشان می دهد که عبارت insert با محدودیت CHECK در تضاد است و دستور پایان یافته است.

5 - یک محدودیت check یک مقدار NULL را ارزیابی نمی کند. بنابراین NULL را می توان بدون محدودیت درج کرد. برای محدود کردن مقادیر NULL از محدودیت NOT NULL استفاده کنید.

6 - محدودیت های check در دستورات Delete اعتبارسنجی نمی شوند.

7 - می توانید به جای حذف محدودیت های check ، آن ها را فعال یا غیرفعال کنید.

ایجاد محدودیت Check با استفاده از SSMS

مرحله 1 : در Object explorer، پوشه جدول را باز کنید و روی پوشه Constraints کلیک راست کرده و New Constraint را انتخاب کنید، مانند تصویر زیر.

ایجاد محدودیت Check با استفاده از SSMS

مرحله 2 : کادر محاوره ای Check Constraint باز می شود. Expressions را انتخاب کنید و مانند شکل زیر روی بیضی ها ... کلیک کنید.

ایجاد محدودیت Check با استفاده از SSMS

مرحله 3 : در کادر محاوره ای "Check constraint Expression" عبارت SQL را برای محدودیت check تایپ کنید. به عنوان مثال، برای ستون حقوق جدول Employee ، محدوده حقوق و دستمزد را به صورت Salary > 2000 and Salary < 4000 وارد کرده و OK را کلیک کنید.

ایجاد محدودیت Check با استفاده از SSMS

مرحله 4 : در گروه Identity، می توانید نام محدودیت را تغییر دهید و توضیحات اضافه کنید.

ایجاد محدودیت Check با استفاده از SSMS

مرحله 5 : در بخش Table Designer در زیر Identity، محدودیت check را فعال یا غیرفعال کنید و مشخص کنید که چه زمانی محدودیت check اعمال می شود.

مرحله 6 : روی Close کلیک کنید. در منوی File روی <Save <table name کلیک کنید.

بنابراین، شما می توانید یک محدودیت check روی یک ستون در یک جدول ایجاد کنید.

تغییر و اصلاح محدودیت Check با استفاده از SSMS

SQL Server Management Studio یا SSMS را باز کنید، روی نام جدول کلیک راست کرده و Design را انتخاب کنید تا آن در table designer باز شود.

اکنون بر روی table designer کلیک راست کرده و مطابق شکل زیر گزینه ... Check Constraints را انتخاب کنید.

تغییر و اصلاح محدودیت های Check با استفاده از SSMS

با این کار کادر محاوره ای "Check Constraint" باز می شود که در آن می توانید یک عبارت را ویرایش کنید، نام محدودیت را تغییر دهید یا محدودیت را برای هر به روز رسانی یا درج غیرفعال کنید، همانطور که در زیر نشان داده شده است.

تغییر و اصلاح محدودیت های Check با استفاده از SSMS

پس از اصلاح روی Close کلیک کنید و تغییرات را ذخیره کنید.

فعال یا غیرفعال کردن محدودیت Check

هنگامی که یک محدودیت check ایجاد کردید، می توانید آن را غیرفعال کنید. غیرفعال کردن محدودیت check ، محدودیت check را در درج یا به روزرسانی اعمال نمی کند. بعداً در صورت نیاز می توانید دوباره آن را فعال کنید.

فعال یا غیرفعال کردن محدودیت Check

آنچه که در زیر می بینید محدودیت CHK_Emp_Salary را غیرفعال می کند.

فعال یا غیرفعال کردن محدودیت Check

برای غیرفعال کردن یک محدودیت check در SSMS، باید "No" را برای "Check Existing Data On Creation Or Re-Enabling" انتخاب کنید. همانطور که در زیر نشان داده شده است، برای فعال کردن مجدد آن "Yes" را انتخاب کنید.

فعال یا غیرفعال کردن محدودیت Check

حذف محدودیت Check با استفاده از SSMS

از دستور DROP CONSTRAINT در عبارت ALTER TABLE برای حذف محدودیت های check موجود استفاده کنید.

حذف محدودیت Check با استفاده از SSMS

آنچه که در زیر می بینید محدودیت چک CHK_Emp_Salary را در جدول Employee حذف می کند.

حذف محدودیت Check با استفاده از SSMS

برای حذف محدودیت ها با استفاده از SQL Server Management Studio، جدولی را که قرار است محدودیتی از آن حذف شود را باز کنید.

حذف محدودیت Check با استفاده از SSMS

حالا نود Constraints را باز کنید و روی محدودیتی که قرار است حذف شود کلیک راست کرده و روی Delete کلیک کنید.

حذف محدودیت Check با استفاده از SSMS

در کادر محاوره ای Delete Object، روی Ok کلیک کنید تا محدودیت حذف شود.

محدودیت های Check در SQL Server ایجاد محدودیت Check با استفاده از SSMS تغییر محدودیت Check با استفاده از SSMS فعال یا غیرفعال کردن محدودیت Check حذف محدودیت Check با استفاده از SSMS آموزش SQL Server