A stun sarrafi shine stun wanda ƙimansu ana lissafta ta atomatik daga wasu stuna, maimakon a saka jiya. PostgreSQL yana goyan bayan kuloolollo stuna sarrafi (Postgres 12+) — ana lissafta ƙimansu a lokaci na rubuta kuma ana adana su. Suna kiyaye bayanai da aka samu daidai ta atomatik.
Bayyana stun sarrafi
CREATE TABLE products (
id SERIAL PRIMARY KEY,
price NUMERIC,
quantity INT,
-- a STORED generated column — computed from price and quantity
total NUMERIC GENERATED ALWAYS AS (price * quantity) STORED
);
INSERT INTO products (price, quantity) VALUES (10, 3);
SELECT total FROM products; -- 30 — computed automatically (you didn't insert it)
Klasusu GENERATED ALWAYS AS (expression) STORED yana sa total a koma daidai price * quantity — ana lissafta a lokaci na saka/sabuntawa kuma ana adana su. Ba za ka iya saka jiya ba (kuma ba ka buƙata ba); a koma daidai yana samu.
Abubuwan amfani gida gida
-- a full name from parts
full_name TEXT GENERATED ALWAYS AS (first_name || ' ' || last_name) STORED
-- a normalized/lowercased value for searching
email_lower TEXT GENERATED ALWAYS AS (lower(email)) STORED
-- area from dimensions
area NUMERIC GENERATED ALWAYS AS (width * height) STORED
-- extract a value from JSONB into a real column (then index it)
user_id INT GENERATED ALWAYS AS ((data->>'user_id')::int) STORED
Stunin sarrafi yana da kyau don ƙimomi da aka samu kuna neman sau da yawa — suna kiyaye daidai ta atomatik kuma za su iya zama mafi mahimmanci (tun da aka adana su).
Stun sarrafi vs lissafta a cikin ƙanannin jiya vs triggers
Generated column → derived value computed automatically, stored, indexable, consistent
Computing in a query (price*qty in SELECT) → no storage, but recomputed every query,
can't be indexed directly
Trigger → more flexible but more complex; generated columns are simpler for pure derivations
→ Use generated columns for simple, deterministic derived values you query/index often.
Me ya sa akwai mahimmanci
Stunin sarrafi sune amfani da PostgreSQL suna game da kiyayewa ta atomatik bayanai da aka samu, kuma fahimta su yana da mahimmanci don kiyaye ƙimomi da aka lissafta daidai kuma masu buƙatu.
Gibin riba shine cewa ƙimar stun sarrafi a koma a ke ta hankali ta atomatik daga wasu stuna kuma a kiyaye ta jiya — don haka bayanai da aka samu (jummula, cikakken sunaye, ƙimomi da aka daidaita, fields JSONB da aka cire) a koma daidai ta tsarewa ba tare da kodun aikace-aikace ko manual sabuntawa wajen thinkar tunani ko sake lissafta shi (kawar da nau'in kurakurai inda bayanai da aka samu ke tafiya jiya). /'saboda adana stun sarrafi na jinsi na gaske ɗaya ƙimar, zasu iya zama mafi mahimmanci — wanda ya fi mahimmanci ga abubuwa kamar kaka cikin haruffa na email don halin sakawar raka'a, ko cire field JSONB a cikin inganci inganci na relational mahimmanci (haɗi mai karfi na jigon JSONB da relational indexing).
Fahimta lokacin da ake amfani da stun sarrafi maimakon abubuwa da suka dace — stun sarrafi don sauƙi, ƙimomi da aka samu ka mutunta kuna neman ko mafi mahimmanci sau da yawa (daidai, mafi mahimmanci, sauƙi), maimakon lissafta a cikin ƙanannin jiya (babu ado kuma ana sake lissafta kowane lokaci kuma ba ta taɓa mahimmanci jiya) ko triggers (masu ƙarfafi amma masu rikitarwa) — yana nuni da fahimta mai kyau kuma hankali. /'Tun da kiyayewa bayanai da aka samu/da aka lissafta daidai shine buƙatun gida, kuma tun da stun sarrafi yana ba da hanyar atomatik, daidai, mafi mahimmanci don ayi haka (sauƙi fiye da kiyayewa kai tsaye ko triggers don sauƙi na asali), fahimta stun sarrafi yana mahimmanci, aiki ne mai alaka da PostgreSQL ilimi don tsarawa waje inda ƙimomi da aka lissafta a kiyaye daidai ta atomatik kuma aka sanya shi inganci da kyau buƙatu — karamin gida mai kyau na PostgreSQL na zamani don sauƙi, daidai bayanai modeling.
