پرش به محتوا

کوتاه کردن (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 می‌توان برای جداول درگیر در ارسال گزارش استفاده کرد.

منابع[ویرایش]

  1. "ISO/IEC 9075 Database languages SQL". iso.org. Retrieved 4 June 2023.
  2. "Description of the effects of nonlogged and minimally logged operations on transaction log backup and the restore process in SQL Server". Microsoft. December 2005.