تفاوت Delete و Truncate :
دستور Delete جز دستورات DML هست یا بعبارتی Data Manipulation Language میباشد که برای اعمالی چون واکشی ، ذخیره سازی ، تغییرات و حذف مورد استفاده قرار میگیرند
دستور Truncate جز دستورات DDL هست یا بعبارتی Data Definition Language میباشد و برای ایجاد , تغییرات در ساختار آبجکتها ( مثل جدول ، ایندکس و ..) مورد استفاده قرار میگیرد
دستور Delete در زمان اجرا قفل گذاری را در سطح ردیف انجام میدهد (row lock)
دستور Truncate قفل گذاری را در سطح جدول در نظر میگیرد (table lock)
دستور Delete میتواند شامل فیلتر (where) برای حذف ردیفهای خاصی باشد
دستور Truncate نمیتواند شامل فیلتر (where) باشد و روی حذف تمام جدول عمل میکند
نکته :
با استفاده از دستور Delete میتوان بخشی از رکوردهای مشخص را حذف نمود ولی با دستور Truncate تمام رکوردها ی جدول حذف میشوند (دستور Truncate نتیجه اجرای دو دستور Drop و Create میباشد)
دستور Delete نسبت به دستور Truncate کندتر عمل میکند زیرا تمام تغییرات در Log ذخیره میکند در نتیجه قابلیت Rollback ممکن میباشد
دستور Truncate نسبت به دستور Delete سریعتر عمل میکند زیرا به ازای اجرای آن در فایل Log چیزی ثبت نمیشود در نتیجه قابلیت Rollback را ندارد
همراه دستور Delete قابلیت اجرای تریگر را داریم
در اجرای دستور Truncate قابلیت اجرای تریگر را نداریم
نکته:
اگر از Transaction استفاده کنیم هر دو دستور Delete و Truncate قابلیت rollback شدن را دارا هستند
دستور Delete جز دستورات DML هست یا بعبارتی Data Manipulation Language میباشد که برای اعمالی چون واکشی ، ذخیره سازی ، تغییرات و حذف مورد استفاده قرار میگیرند
دستور Truncate جز دستورات DDL هست یا بعبارتی Data Definition Language میباشد و برای ایجاد , تغییرات در ساختار آبجکتها ( مثل جدول ، ایندکس و ..) مورد استفاده قرار میگیرد
دستور Delete در زمان اجرا قفل گذاری را در سطح ردیف انجام میدهد (row lock)
دستور Truncate قفل گذاری را در سطح جدول در نظر میگیرد (table lock)
دستور Delete میتواند شامل فیلتر (where) برای حذف ردیفهای خاصی باشد
دستور Truncate نمیتواند شامل فیلتر (where) باشد و روی حذف تمام جدول عمل میکند
نکته :
با استفاده از دستور Delete میتوان بخشی از رکوردهای مشخص را حذف نمود ولی با دستور Truncate تمام رکوردها ی جدول حذف میشوند (دستور Truncate نتیجه اجرای دو دستور Drop و Create میباشد)
دستور Delete نسبت به دستور Truncate کندتر عمل میکند زیرا تمام تغییرات در Log ذخیره میکند در نتیجه قابلیت Rollback ممکن میباشد
دستور Truncate نسبت به دستور Delete سریعتر عمل میکند زیرا به ازای اجرای آن در فایل Log چیزی ثبت نمیشود در نتیجه قابلیت Rollback را ندارد
همراه دستور Delete قابلیت اجرای تریگر را داریم
در اجرای دستور Truncate قابلیت اجرای تریگر را نداریم
نکته:
اگر از Transaction استفاده کنیم هر دو دستور Delete و Truncate قابلیت rollback شدن را دارا هستند