Truncate table
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.
Barcha ma'lumotlarni bitta jadvaldan olib tashlang
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.
Barcha ma'lumotlarni bitta jadvaldan olib tashlang
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;Foreign key kalitlari havolalari bo'lgan jadvaldan barcha ma'lumotlarni olib tashlang
Foreign key kalitlari havolalari bo'lgan jadvaldan barcha ma'lumotlarni olib tashlangAmalda, 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.
PostgreSQL TRUNCATE TABLE va ON DELETE trigger
TRUNCATE TABLE va ON DELETE triggerTRUNCATE 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.
PostgreSQL TRUNCATE TABLE va tranzaksiya
TRUNCATE TABLE va tranzaksiyaTRUNCATE TABLE tranzaksiya uchun xavfsizdir. Bu shuni anglatadiki, agar siz uni tranzaktsiyaga joylashtirsangiz, uni xavfsiz tarzda qaytarib olishingiz mumkin.
Xulosa
Katta jadvaldagi barcha ma'lumotlarni o'chirish uchun
TRUNCATE TABLEiborasidan foydalaning.Jadvalni va jadvalga tashqi kalit cheklovi orqali murojaat qiladigan boshqa jadvallarni kesish uchun
CASCADEopsiyasidan foydalaning.TRUNCATE TABLEDELETEtriggerida ishga tushmaydi. Buning o'rniga,BEFORE TRUNCATEvaAFTER TRUNCATEtriggerlarini ishga tushiradi.TRUNCATE TABLEbayonoti tranzaksiya uchun xavfsizdir.
Last updated
Was this helpful?