Jadval nomini o'zgartirish
Kirish: Ushbu qo'llanmada siz PostgreSQL ALTER TABLE ... RENAME TO buyrug'i yordamida mavjud jadval nomini o'zgartirishni o'rganasiz.
PostgreSQLda jadval nomini o'zgartirish uchun ALTER TABLE ... RENAME TO buyrug'idan foydalaniladi.
Asosiy sintaksis:
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:
ALTER TABLE IF EXISTS table_name
RENAME TO new_table;
Bunda agar jadval topilmasa, so'rov to'xtab qolmaydi, faqat ogohlantirish (notice) beriladi.
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.
Dastlab bir-biriga bog'langan ikkita jadval yaratamiz:
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:
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:
\d vendor_groups
Natija:
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
ALTER TABLE table_name RENAME TO new_table; buyrug'idan foydalaning.IF EXISTS qo'shimchasini ishlating.