15 / 100

DEFAULT

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.


PostgreSQL DEFAULT cheklovi haqida

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:

query.sql
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:

query.sql
ustun_nomi data_type DEFAULT standart_qiymat

Standart qiymat qanday ishlaydi?

  1. Agar INSERT buyrug'ida ushbu ustun ko'rsatilmasa, PostgreSQL unga belgilangan standart_qiymatni yozadi:
    query.sql
    INSERT INTO jadval_nomi (ustun2) VALUES (qiymat2);
    
  2. Agar xohlasangiz, INSERT ro'yxatida ustunni ko'rsatib, qiymatlar ro'yxatida to'g'ridan-to'g'ri DEFAULT so'zini yozishingiz ham mumkin:
    query.sql
    INSERT INTO jadval_nomi (ustun1, ustun2) VALUES (DEFAULT, qiymat2);
    

Amaliy misol: Tovarlar va soliq stavkasi

Keling, items jadvalini yaratamiz. Unda soliq (tax) ustuniga 5% (ya'ni 0.05) standart qiymat beramiz:

query.sql
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
);

1-holat: tax ustunini kiritmasdan qoldirish

Yangi tovar kiritamiz, ammo tax ustunini INSERT da ko'rsatmaymiz:

query.sql
INSERT INTO items (name, quantity, price)
VALUES ('iPhone 15 Pro', 1, 1299.99) 
RETURNING *;

Natija:

item_idnamequantitypricetax
1iPhone 15 Pro11299.990.05

PostgreSQL avtomatik ravishda 0.05 qiymatini o'rnatdi!

2-holat: DEFAULT kalit so'zidan aniq foydalanish

query.sql
INSERT INTO items (name, quantity, price, tax)
VALUES ('iPhone 16 Pro', 1, 1399.99, DEFAULT) 
RETURNING *;

Natija:

item_idnamequantitypricetax
2iPhone 16 Pro11399.990.05

3-holat: Standart qiymat o'rniga o'z qiymatimizni berish

Agar biz boshqa soliq stavkasini (masalan, 0.08) aniq ko'rsatsak, PostgreSQL standart qiymat o'rniga biz bergan yangi qiymatni saqlaydi:

query.sql
INSERT INTO items (name, quantity, price, tax)
VALUES ('iPhone 17 Pro', 1, 1499.99, 0.08) 
RETURNING *;

Natija:

item_idnamequantitypricetax
3iPhone 17 Pro11499.990.08

Sana va vaqt ustunlari uchun standart qiymat (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:

query.sql
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:

query.sql
INSERT INTO orders (customer, ship_to)
VALUES ('John Doe', '9000 N 1st Street, San Jose, CA 95134') 
RETURNING *;

Natija:

order_idcustomership_tocreated_at
1John Doe9000 N 1st Street, San Jose, CA 951342026-09-21 15:30:45.123456

PostgreSQL serverning ayni joriy vaqtini avtomatik tarzda created_at ga yozib qo'ydi!


Xulosa

  • 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.
  • Joriy sana va vaqtni avtomatik qayd etish uchun DEFAULT CURRENT_TIMESTAMP qo'llaniladi.
QBilimingizni sinab ko'ring
1 / 5

1. PostgreSQL DEFAULT cheklovining asosiy vazifasi nima?