Ushbu qo'llanmada siz katta jadvallardagi barcha ma'lumotlarni tezda o'chirish uchun PostgreSQL TRUNCATE TABLE
bayonotidan qanday foydalanishni o'rganasiz.
Jadvaldagi barcha ma'lumotlarni o'chirish uchun siz DELETE
iborasidan foydalanasiz. Biroq, juda ko'p ma'lumotlarga ega bo'lgan jadvaldagi barcha ma'lumotlarni o'chirish uchun DELETE
iborasidan foydalansangiz, u samarali emas. Bunday holda siz TRUNCATE TABLE
bayonotidan foydalanishingiz kerak:
TRUNCATE TABLE table_name;
TRUNCATE TABLE
bayonoti jadvaldagi barcha maʼlumotlarni skanerdan oʻtkazmasdan oʻchirib tashlaydi. Shuning uchun u DELETE
iborasidan tezroq ishlaydi.
Bundan tashqari, TRUNCATE TABLE
iborasi xotirani darhol qaytarib oladi, shuning uchun siz keyingi VACUMM
operatsiyasini bajarishingiz shart emas, bu katta jadvallar uchun foydalidir.
TRUNCATE TABLE
bayonotining eng oddiy shakli quyidagicha:
TRUNCATE TABLE table_name;
Quyidagi misolda invoices
jadvalidagi barcha ma'lumotlarni o'chirish uchun TRUNCATE TABLE
iborasi qo'llaniladi:
TRUNCATE TABLE invoices;
Maʼlumotni oʻchirishdan tashqari, identifikator ustunidagi qiymatlarni quyidagi kabi RESTART IDENTITY
opsiyasidan foydalanib tiklashingiz mumkin:
TRUNCATE TABLE table_name
RESTART IDENTITY;
Masalan, quyidagi bayonot invoices
jadvalidagi barcha qatorlarni olib tashlaydi va invoice_no
ustuni bilan bog'langan ketma-ketlikni tiklaydi:
TRUNCATE TABLE invoices
RESTART IDENTITY;
Odatiy boʻlib, TRUNCATE TABLE
iborasi CONTINUE IDENTITY
opsiyasidan foydalanadi. Ushbu parametr, asosan, jadvaldagi ustun bilan bog'langan qiymatni ketma-ketlikda qayta ishga tushirmaydi.
Bir vaqtning o'zida bir nechta jadvaldagi barcha ma'lumotlarni o'chirish uchun har bir jadvalni vergul (,) bilan quyidagicha ajratasiz:
TRUNCATE TABLE
table_name1,
table_name2,
...;
Masalan, quyidagi bayonot invoices
va customers
jadvallaridan barcha ma'lumotlarni olib tashlaydi:
TRUNCATE TABLE invoices, customers;
Amalda, siz kesmoqchi bo'lgan jadvalda ko'pincha TRUNCATE TABLE
bayonotida ko'rsatilmagan boshqa jadvallarning xorijiy kalit havolalari mavjud.
Odatiy boʻlib, TRUNCATE TABLE
iborasi tashqi kalit havolalari boʻlgan jadvaldan hech qanday maʼlumotni olib tashlamaydi.
Jadval va boshqa jadvallardan ma'lumotlarni olib tashlash uchun chet el kalitlari jadvalga havola qilinadi, siz TRUNCATE TABLE
bayonotida CASCADE
opsiyasidan quyidagi tarzda foydalanasiz:
TRUNCATE TABLE table_name
CASCADE;
Quyidagi misol invoices
jadvalidan ma'lumotlarni o'chiradi va xorijiy kalit cheklovlari orqali invoices
jadvaliga havola qiladigan boshqa jadvallar:
TRUNCATE TABLE invoices CASCADE;
CASCADE
opsiyasi qoʻshimcha eʼtibor bilan qoʻllanilishi kerak, aks holda siz istamagan jadvallardan maʼlumotlarni oʻchirib tashlashingiz mumkin.
Odatiy bo'lib, TRUNCATE TABLE
iborasi RESTRICT
opsiyasidan foydalanadi, bu sizga tashqi kalit cheklash havolalariga ega bo'lgan jadvalni kesishingizga to'sqinlik qiladi.
TRUNCATE TABLE
iborasi jadvaldagi barcha maʼlumotlarni oʻchirib tashlasa ham, jadval bilan bogʻliq boʻlgan ON DELETE
triggerlarini ishga tushirmaydi.
Jadvalga TRUNCATE TABLE
buyrug'i qo'llanilganda, triggerni ishga tushirish uchun siz ushbu jadval uchun BEFORE TRUNCATE
va/yoki AFTER TRUNCATE
triggerlarini belgilashingiz kerak.
TRUNCATE TABLE
tranzaksiya uchun xavfsizdir. Bu shuni anglatadiki, agar siz uni tranzaktsiyaga joylashtirsangiz, uni xavfsiz tarzda qaytarib olishingiz mumkin.
-
Katta jadvaldagi barcha ma'lumotlarni o'chirish uchun
TRUNCATE TABLE
iborasidan foydalaning. -
Jadvalni va jadvalga tashqi kalit cheklovi orqali murojaat qiladigan boshqa jadvallarni kesish uchun
CASCADE
opsiyasidan foydalaning. -
TRUNCATE TABLE
DELETE
triggerida ishga tushmaydi. Buning o'rniga,BEFORE TRUNCATE
vaAFTER TRUNCATE
triggerlarini ishga tushiradi. -
TRUNCATE TABLE
bayonoti tranzaksiya uchun xavfsizdir.