PostgreSQL constraints — ટેબલ ડેટા પર rules — દ્વારા ડેટા integrity enforce કરે છે। standard ones (, , , , , ) ઉપરાંત, Postgres constraints જેવા શક્તિશાળી વિકલ્પો અને lifespan expressions ઉમેરે છે.
PostgreSQL constraints — ટેબલ ડેટા પર rules — દ્વારા ડેટા integrity enforce કરે છે। standard ones (, , , , , ) ઉપરાંત, Postgres constraints જેવા શક્તિશાળી વિકલ્પો અને lifespan 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 cross-column conditions અને regex patterns સહિત સમૃદ્ધ business rules enforce કરી શકે છે.
-- 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-specific feature) 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 ડેટા integrity માટે આવશ્યક છે — તેઓ database level પર ડેટા rules enforce કરે છે (સંરક્ષણની છેલ્લી પંક્તિ, હંમેશા enforce થાય છે application code ને ધ્યાલ્ હીન), તેથી PostgreSQL's constraint support સમજવું મજબૂત databases ડિઝાઇન માટે મહત્વપૂર્ણ છે.
standard constraints (PRIMARY KEY, FOREIGN KEY with referential integrity, UNIQUE, NOT NULL, CHECK, DEFAULT) જાણવું અને દરેક શું enforce કરે છે તે જાણવું schema design માટે મૂળભૂત છે, database-level guarantees (uniqueness, valid references, required values, valid data) પ્રદાન કરે છે જે bugs, race conditions, અને inconsistent data પ્રત્યે બચાવ કરે છે એમ રીતે application code એકલું કરી શકતો નથી.
PostgreSQL's CHECK constraints ખાસ સક્ષમ છે, cross-column conditions (જેમ કે end_date > start_date જેવી logical consistency) અને even regex patterns સહિત સમૃદ્ધ business rules enforce કરે છે — તમને schema માં સીધું domain rules encode કરવા દે છે.
ખાસ કરીને મૂલ્યવાન છે Postgres-specific EXCLUDE constraint, જે custom operators દ્વારા વિરોધી પંક્તિઓ પ્રતિબંધિત કરે છે — સૌથી વધુ નોંધનીય overlapping time ranges (room/resource માટે double-bookings) પ્રતિબંધિત કરે છે, એક શક્તિશાળી ક્ષમતા જે standard UNIQUE constraint કરી શકતો નથી અને જે elegant રીતે એક સામાન્ય real-world problem (scheduling, reservations) database level પર હલ કરે છે.
Constraints સમજવું — integrity માટે standard ones, Postgres's flexible CHECK expressions, અને conflict prevention માટે EXCLUDE — databases ડિઝાઇન કરવા માટે મહત્વપૂર્ણ છે જે automatically correctness enforce કરે.
Dig integrity મહત્વપૂર્ણ છે અને constraints guarantees પ્રદાન કરે છે જે application code કરી શકતો નથી, અને Postgres basics તરતમ શક્તિશાળી વિકલ્પો (rich CHECK, overlaps માટે EXCLUDE) ઓફર કરે છે, PostgreSQL's constraint support સમજવું મૂલ્યવાન, practically-relevant જ્ઞાન છે મજબૂત databases બનાવવા માટે, EXCLUDE constraint ખાસ રીતે distinctive, useful Postgres capability છે scheduling/reservation systems માટે જાણવા લાયક છે.