PostgreSQL constraints کے ذریعے ڈیٹا کی سالمیت کو enforce کرتا ہے — یہ ٹیبل ڈیٹا پر rules ہیں۔ معیاری constraints (, , , , , ) کے علاوہ، Postgres طاقتور اختیارات جیسے constraints اور لچکدار expressions شامل کرتا ہے۔
PostgreSQL constraints کے ذریعے ڈیٹا کی سالمیت کو enforce کرتا ہے — یہ ٹیبل ڈیٹا پر rules ہیں۔ معیاری constraints (, , , , , ) کے علاوہ، Postgres طاقتور اختیارات جیسے constraints اور لچکدار expressions شامل کرتا ہے۔
PRIMARY KEYFOREIGN KEYUNIQUENOT NULLCHECKDEFAULTCHECKCREATE TABLE bookings (
id SERIAL PRIMARY KEY, -- unique identifier
room_id INT NOT NULL REFERENCES rooms(id), -- foreign key (referential integrity)
email VARCHAR(255) UNIQUE NOT NULL, -- unique + required
guests INT CHECK (guests > 0 AND guests <= 10), -- value constraint
status TEXT DEFAULT 'pending' -- default value
);
PRIMARY KEY → unique row identifier
FOREIGN KEY → references another table (referential integrity, with ON DELETE options)
UNIQUE → no duplicate values
NOT NULL → must have a value
CHECK → value must satisfy a condition
DEFAULT → default value when not provided
CHECK (price > 0)
CHECK (end_date > start_date) -- logical consistency between columns
CHECK (status IN ('active', 'inactive', 'pending'))
CHECK (email ~ '^[^@]+@[^@]+\.[^@]+$') -- regex validation
Postgres CHECK constraints بھرپور کاروباری قوانین کو enforce کر سکتے ہیں، بشمول cross-column conditions اور regex patterns۔
-- prevent OVERLAPPING bookings for the same room (impossible with UNIQUE alone!)
CREATE TABLE bookings (
room_id INT,
during TSRANGE, -- a time range
EXCLUDE USING GIST (room_id WITH =, during WITH &&) -- no two rows where room_id is
); -- equal AND time ranges OVERLAP
EXCLUDE constraints (ایک Postgres-مخصوص خصوصیت) وہ rows روکتے ہیں جو custom operator سے تنازع رکھتے ہوں — شہرت سے، overlapping time ranges (double-bookings) کو روکنا، جو UNIQUE constraint نہیں کر سکتا۔
-- check constraints at COMMIT instead of immediately (useful for circular references)
FOREIGN KEY (...) REFERENCES ... DEFERRABLE INITIALLY DEFERRED
Constraints ڈیٹا کی سالمیت کے لیے ضروری ہیں — وہ ڈیٹا بیس کی سطح پر ڈیٹا rules کو enforce کرتے ہیں (آخری دفاع، ہمیشہ enforce ہوتے ہیں چاہے application code کچھ بھی ہو)، تو PostgreSQL کی constraint support کو سمجھنا مضبوط ڈیٹا بیسز ڈیزائن کرنے کے لیے اہم ہے۔
معیاری constraints کو جاننا (PRIMARY KEY, FOREIGN KEY referential integrity کے ساتھ، UNIQUE, NOT NULL, CHECK, DEFAULT) اور ہر ایک کیا enforce کرتا ہے schema design کے لیے بنیادی ہے، ڈیٹا بیس کی سطح کی ضمانتیں فراہم کرتے ہوئے (uniqueness، valid references، required values، valid data) جو bugs، race conditions، اور inconsistent data سے محفوظ رکھتے ہیں وہ طریقے سے جو application code اکیلا نہیں کر سکتا۔
Postgres کی CHECK constraints خاص طور پر قابل، بھرپور کاروباری rules کو enforce کرتے ہوئے بشمول cross-column conditions (منطقی consistency جیسے end_date > start_date) اور یہاں تک regex patterns — آپ کو domain rules کو براہ راست schema میں encode کرنے دیتے ہوئے۔
خاص طور پر قیمتی ہے Postgres-مخصوص EXCLUDE constraint، جو تنازع رکھنے والے rows کو custom operators سے روکتا ہے — سب سے نمایاں طور پر overlapping time ranges (ایک room/resource کے لیے double-bookings) کو روکنا، ایک طاقتور صلاحیت جو معیاری UNIQUE constraint نہیں فراہم کر سکتا اور جو elegantly ایک عام حقیقی دنیا کے مسئلے (scheduling، reservations) کو ڈیٹا بیس کی سطح پر حل کرتا ہے۔
Constraints کو سمجھنا — معیاری ones integrity کے لیے، Postgres کی لچکدار CHECK expressions، اور conflict prevention کے لیے طاقتور EXCLUDE — ان ڈیٹا بیسز کو ڈیزائن کرنے کے لیے اہم ہے جو خودکار طور پر correctness کو enforce کریں۔
کیونکہ ڈیٹا کی سالمیت critical ہے اور constraints وہ ضمانتیں فراہم کرتے ہیں جو application code نہیں کر سکتا، اور چونکہ Postgres طاقتور اختیارات فراہم کرتا ہے (بھرپور CHECK، overlaps کے لیے EXCLUDE) بنیادی چیزوں سے آگے، PostgreSQL کی constraint support کو سمجھنا قیمتی، عملی طور پر متعلقہ علم ہے مضبوط ڈیٹا بیسز بنانے کے لیے، EXCLUDE constraint خاص طور پر ایک distinctive، مفید Postgres صلاحیت ہے جو scheduling/reservation systems کے لیے جاننے کے قابل ہے۔