70 / 100

RENAME TABLE

Jadval nomini o'zgartirish

Kirish: Ushbu qo'llanmada siz PostgreSQL ALTER TABLE ... RENAME TO buyrug'i yordamida mavjud jadval nomini o'zgartirishni o'rganasiz.

ALTER TABLE RENAME TO buyrug'iga kirish

PostgreSQLda jadval nomini o'zgartirish uchun ALTER TABLE ... RENAME TO buyrug'idan foydalaniladi.

Asosiy sintaksis:

query.sql
ALTER TABLE table_name
RENAME TO new_table;

Ushbu sintaksisda:

  • table_name — nomini o'zgartirmoqchi bo'lgan mavjud jadvalingiz;
  • new_table — jadvalning yangi nomi.

Agar jadval mavjud bo'lmasa, PostgreSQL xatolik chiqaradi. Xatolikning oldini olish uchun IF EXISTS opsiyasidan foydalanish mumkin:

query.sql
ALTER TABLE IF EXISTS table_name
RENAME TO new_table;

Bunda agar jadval topilmasa, so'rov to'xtab qolmaydi, faqat ogohlantirish (notice) beriladi.

Bog'liq obyektlarning avtomatik yangilanishi

PostgreSQLning ajoyib jihati shundaki, jadval nomi o'zgartirilganda unga bog'langan boshqa obyektlar — masalan, tashqi kalitlar (FOREIGN KEY) va ko'rinishlar (VIEW) ta'rifidagi jadvallar nomlari PostgreSQL tomonidan avtomatik tarzda yangilanadi.

Jadval nomini o'zgartirishga misol

Dastlab bir-biriga bog'langan ikkita jadval yaratamiz:

query.sql
CREATE TABLE groups (   
    group_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    group_name VARCHAR(255) NOT NULL
);

CREATE TABLE vendors (
    vendor_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    vendor_name VARCHAR(255) NOT NULL,
    group_id INT NOT NULL,
    FOREIGN KEY(group_id) REFERENCES groups(group_id) ON DELETE CASCADE 
);

Endi groups jadvali nomini vendor_groups ga o'zgartiramiz:

query.sql
ALTER TABLE groups
RENAME TO vendor_groups;

Natijada groups jadvali nomi vendor_groups ga aylanadi va vendors jadvalining FOREIGN KEY bog'liqligi avtomatik ravishda yangi nomga moslashtiriladi:

query.sql
\d vendor_groups

Natija:

matn
Table "public.vendor_groups"
   Column   |          Type          | Collation | Nullable |           Default
------------+------------------------+-----------+----------+------------------------------
 group_id   | integer                |           | not null | generated always as identity
 group_name | character varying(255) |           | not null |
Indexes:
    "groups_pkey" PRIMARY KEY, btree (group_id)
Referenced by:
    TABLE "vendors" CONSTRAINT "vendors_group_id_fkey" FOREIGN KEY (group_id) REFERENCES vendor_groups(group_id) ON DELETE CASCADE

Xulosa

  • Mavjud jadval nomini o'zgartirish uchun ALTER TABLE table_name RENAME TO new_table; buyrug'idan foydalaning.
  • Xatolikka yo'l qo'ymaslik uchun IF EXISTS qo'shimchasini ishlating.
  • Jadvalga bog'langan tashqi kalitlar va ko'rinishlar yangi nomga avtomatik o'tkaziladi.