Standart qiymat cheklovi
Kirish: Ushbu darsda siz jadval ustunlariga standart qiymat o'rnatish uchun PostgreSQL DEFAULT cheklovidan qanday foydalanishni, INSERT buyrug'ida DEFAULT kalit so'zini qo'llashni va vaqt tamg'alari (TIMESTAMP) uchun avtomatik joriy vaqtni belgilashni o'rganasiz.
PostgreSQLda agar ustun uchun boshlang'ich qiymat ko'rsatilmagan bo'lsa, uning sukut bo'yicha qiymati NULL bo'ladi.
Biroq ko'pincha yangi qator kiritilganda biror ustun bo'sh qoldirilsa, unga aniq bir standart qiymat avtomatik yozilishi kerak bo'ladi (masalan, tovar solig'i stavkasi, ro'yxatdan o'tgan sana yoki foydalanuvchi holati). Buning uchun DEFAULT cheklovi ishlatiladi:
CREATE TABLE jadval_nomi (
ustun1 data_type DEFAULT standart_qiymat,
ustun2 data_type
);
Sintaksisda ustunning ma'lumot turidan so'ng DEFAULT kalit so'zi va uning standart qiymati yoziladi:
ustun_nomi data_type DEFAULT standart_qiymat
INSERT buyrug'ida ushbu ustun ko'rsatilmasa, PostgreSQL unga belgilangan standart_qiymatni yozadi:
INSERT INTO jadval_nomi (ustun2) VALUES (qiymat2);
INSERT ro'yxatida ustunni ko'rsatib, qiymatlar ro'yxatida to'g'ridan-to'g'ri DEFAULT so'zini yozishingiz ham mumkin:
INSERT INTO jadval_nomi (ustun1, ustun2) VALUES (DEFAULT, qiymat2);
Keling, items jadvalini yaratamiz. Unda soliq (tax) ustuniga 5% (ya'ni 0.05) standart qiymat beramiz:
CREATE TABLE items (
item_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
name VARCHAR(255) NOT NULL,
quantity INT NOT NULL,
price DEC(11, 2) NOT NULL,
tax DEC(11, 2) DEFAULT 0.05
);
tax ustunini kiritmasdan qoldirishYangi tovar kiritamiz, ammo tax ustunini INSERT da ko'rsatmaymiz:
INSERT INTO items (name, quantity, price)
VALUES ('iPhone 15 Pro', 1, 1299.99)
RETURNING *;
Natija:
| item_id | name | quantity | price | tax |
|---|---|---|---|---|
| 1 | iPhone 15 Pro | 1 | 1299.99 | 0.05 |
PostgreSQL avtomatik ravishda 0.05 qiymatini o'rnatdi!
DEFAULT kalit so'zidan aniq foydalanishINSERT INTO items (name, quantity, price, tax)
VALUES ('iPhone 16 Pro', 1, 1399.99, DEFAULT)
RETURNING *;
Natija:
| item_id | name | quantity | price | tax |
|---|---|---|---|---|
| 2 | iPhone 16 Pro | 1 | 1399.99 | 0.05 |
Agar biz boshqa soliq stavkasini (masalan, 0.08) aniq ko'rsatsak, PostgreSQL standart qiymat o'rniga biz bergan yangi qiymatni saqlaydi:
INSERT INTO items (name, quantity, price, tax)
VALUES ('iPhone 17 Pro', 1, 1499.99, 0.08)
RETURNING *;
Natija:
| item_id | name | quantity | price | tax |
|---|---|---|---|---|
| 3 | iPhone 17 Pro | 1 | 1499.99 | 0.08 |
CURRENT_TIMESTAMP)Ma'lumotlar bazasida har bir buyurtma yoki xabar qaysi vaqtda yaratilganini avtomatik belgilash juda keng tarqalgan amaliyotdir. Buning uchun TIMESTAMP turi bilan birga CURRENT_TIMESTAMP funksiyasidan foydalaniladi:
CREATE TABLE orders (
order_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
customer VARCHAR(100) NOT NULL,
ship_to VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Endi buyurtma kiritganda vaqtni qo'lda yozishimiz shart emas:
INSERT INTO orders (customer, ship_to)
VALUES ('John Doe', '9000 N 1st Street, San Jose, CA 95134')
RETURNING *;
Natija:
| order_id | customer | ship_to | created_at |
|---|---|---|---|
| 1 | John Doe | 9000 N 1st Street, San Jose, CA 95134 | 2026-09-21 15:30:45.123456 |
PostgreSQL serverning ayni joriy vaqtini avtomatik tarzda created_at ga yozib qo'ydi!
DEFAULT cheklovi yangi qator kiritilganda qiymat berilmagan taqdirda sukut bo'yicha ishlatiladigan qiymatni belgilaydi.INSERT buyrug'ida standart qiymatni ifodalash uchun DEFAULT kalit so'zidan foydalanish mumkin.DEFAULT CURRENT_TIMESTAMP qo'llaniladi.