کوتاه کردن (SQL)
ظاهر
در SQL ، دستور TRUNCATE TABLE
یک عملیات زبان دستکاری داده ها (DML) است که تمام ردیف های یک جدول را بدون ایجاد یک عمل فعال حذف می کند. نتیجه این عملیات به سرعت تمام دادهها را از یک جدول حذف میکند و معمولاً تعدادی از مکانیسمهای اعمال یکپارچگی را دور میزند. این به طور رسمی در استاندارد SQL:2008 ، به عنوان ویژگی اختیاری F200، "TRUNCATE TABLE" معرفی شد.
TRUNCATE TABLE همه سطرها را از جدول حذف می کند، اما ساختار جدول و ستون ها، محدودیت ها، شاخص ها و غیره باقی می مانند. برای حذف تعریف جدول علاوه بر داده های آن، از عبارت DROP TABLE استفاده کنید.
دستور TRUNCATE TABLE mytable
از نظر منطقی (البته نه از نظر فیزیکی) معادل عبارت DELETE FROM mytable
(بدون عبارت WHERE
) است. ویژگی های زیر TRUNCATE TABLE
از DELETE
متمایز می کند:
- در پایگاه داده Oracle ،
TRUNCATE
به طور ضمنی قبل و بعد از یک عملیات commit قرار می گیرد. (این مورد ممکن است در MySQL، هنگام استفاده از یک موتور ذخیره سازی تراکنشی نیز وجود داشته باشد.) - به طور معمول،
TRUNCATE TABLE
به سرعت تمام رکوردهای یک جدول را با جدا کردن صفحات داده استفاده شده توسط جدول حذف می کند. این باعث کاهش سربار منبع ثبت حذفها و همچنین تعداد قفلهای بهدستآمده میشود. سوابق حذف شده از این طریق را نمی توان در یک عملیات برگشتی بازیابی کرد. دو استثنای قابل توجه برای این قانون، پیادهسازیهایی هستند که در PostgreSQL و Microsoft SQL Server یافت میشوند، که هر دو اجازه میدهند تا دستوراتTRUNCATE TABLE
به صورت تراکنشی متعهد یا بازگردانده شوند. - تعیین یک عبارت
WHERE
در عبارتTRUNCATE TABLE
امکان پذیر نیست. TRUNCATE TABLE
زمانی که یک کلید خارجی به جدولی که باید کوتاه شود ارجاع می دهد نمی تواند استفاده شود، زیرا دستوراتTRUNCATE TABLE
باعث شلیک نمی شوند. این میتواند منجر به دادههای متناقض شود زیرا محرکهایON DELETE
/ON UPDATE
فعال نمیشوند.- در برخی از سیستم های کامپیوتری،
TRUNCATE TABLE
تعداد ستون Identity را به دانه هویت بازنشانی می کند. - در مایکروسافت SQL Server 2000 و فراتر از آن در حالت بازیابی کامل، هر تغییر در پایگاه داده ثبت میشود، بنابراین عبارات
TRUNCATE TABLE
میتوان برای جداول درگیر در ارسال گزارش استفاده کرد.
منابع
[ویرایش]- "ISO/IEC 9075 Database languages SQL". iso.org. Retrieved 4 June 2023.
- "Description of the effects of nonlogged and minimally logged operations on transaction log backup and the restore process in SQL Server". Microsoft. December 2005.