SQL CHECK Constraint

در SQL از CHECK Constraint برای بررسی شرط‌های خاص روی داده‌های یک ستون استفاده می‌کنیم.
این محدودیت باعث میشه فقط مقادیری وارد جدول بشن که با شرط تعریف‌شده مطابقت دارن.

🔹 ساختار کلی

CREATE TABLE table_name ( column_name datatype CHECK (condition) );

یا با نام‌گذاری اختصاصی:

CREATE TABLE table_name ( column_name datatype, CONSTRAINT constraint_name CHECK (condition) );

🔹 مثال ساده

CREATE TABLE Students ( StudentID INT PRIMARY KEY, FullName VARCHAR(100), Age INT CHECK (Age >= 18) );

📌 توضیح:
ستون Age فقط زمانی مقدار می‌پذیره که عدد واردشده بزرگ‌تر یا مساوی ۱۸ باشه.

🔹 درج داده معتبر

INSERT INTO Students VALUES (1, 'Ali Rezaei', 20);

✅ معتبره چون مقدار Age = 20 شرط Age >= 18 رو رعایت کرده.

🔹 درج داده نامعتبر

INSERT INTO Students VALUES (2, 'Sara Ahmadi', 15);

❌ خطا: مقدار Age = 15 شرط تعریف‌شده در CHECK رو نقض کرده.

🔹 چند شرط در CHECK

می‌تونیم از چند شرط با عملگرهای منطقی (AND, OR) استفاده کنیم:

CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, Salary INT CHECK (Salary > 0 AND Salary < 100000), Gender CHAR(1) CHECK (Gender IN ('M', 'F')) );

📌 توضیح:

  • Salary باید بین ۰ و ۱۰۰۰۰۰ باشه.

  • Gender فقط می‌تونه 'M' یا 'F' باشه.

🔹 افزودن CHECK بعد از ساخت جدول

ALTER TABLE Students ADD CONSTRAINT chk_Age CHECK (Age >= 18);

🔹 حذف CHECK Constraint

ALTER TABLE Students DROP CONSTRAINT chk_Age;

🔹 نکات مهم

  • از CHECK برای کنترل محدوده یا نوع منطقی داده‌ها استفاده میشه.

  • اگر چند شرط CHECK برای یک جدول تعریف بشن، همه باید برقرار باشن تا رکورد ثبت بشه.

  • در SQL Server، MySQL و PostgreSQL به‌صورت مشابه عمل می‌کنه.

  • برای بررسی مجموعه‌ای از مقادیر خاص، می‌تونی از IN استفاده کنی.