PDA

View Full Version : سوال: پاک کردن جداول SQL



galesh
پنج شنبه 13 مهر 1391, 14:33 عصر
چطور میتونم با یک دستور sql اطلاعات چند جدول رو بطور همزمان پاک کنم ؟:متفکر:

حمیدرضاصادقیان
پنج شنبه 13 مهر 1391, 21:44 عصر
سلام.
شما یا باید اطلاعات همه جداول رو حذف کنید یا در داخل یک حلقه اینکارو انجام بدید( البته در SQL server )
با استفاده از دستو رMs_ForeachTable میتوانید اینکارو بکنید. اگر در سایت جستجو کنید مثالهای زیادی برای اون وجود داره.

mahdidabaghi
جمعه 14 مهر 1391, 00:24 صبح
سلام
پیشنهاد من هم truncate کردنه :truncate table table_name
البته این دستور رو باید در sql اجرا کنین
با این دستور تیبلتون کلا ریست میشه و رکوردهای اون هم پاک میشه

حمیدرضاصادقیان
جمعه 14 مهر 1391, 01:05 صبح
دستور Truncate فقط برای یک جدوله. در ضمن اون جدول نیز نباید هیچ Relation داشته باشه وگرنه دچار خطا میشه.

mahdidabaghi
شنبه 15 مهر 1391, 01:18 صبح
دستور Truncate فقط برای یک جدوله. در ضمن اون جدول نیز نباید هیچ Relation داشته باشه وگرنه دچار خطا میشه.
با شما موافقم جناب صادقیان
مثلا شما یه تیبل اصلی دارین که یکی از فیلداش نام شهره.(که ما تو این تیبل به هر شهر یه کدی نسبت میدیم مثلا کد 0511) و یه تیبل دیگه ای واسه شهر داریم(که سه تا فیلد داره id و و Code_City , Name_City که مثلا این هم دارای اطلاعات 1 و مشهد و 0511 هست و این code_city در اصل همون کلید خارجیمونه).حالا اگه یه Rilation بین این دو تا باشه منطق sql اجازه نمیده بتونیم مشهد رو از تیبل شهرمون پاک کنیم چون اون وقت تیبل اصلی ما نمیدونه که code_city اون به کدوم شهر اشاره میکنه.
البته شما که استاد مایین و هدف متد یادگیری این روش به سایر دوستان هست
در ضمن میشه یه پروسیجر تو اس کیو ال نوشت و تیبل ها رو گروهی truncate کرد(البته بشرطی که مورد بالا رعایت بشه)
موفق باشید

حمیدرضاصادقیان
شنبه 15 مهر 1391, 09:16 صبح
بله میتوان با یک حلقه اینکارو کرد.ولی برای اینکار شما باید یک Procedure طولانی بنویسید. ولی اگر از SP_MSforeachtable استفاده کنید با یک خط تمامی داده های جداول حذف خواهند شد.!

abcd_a
شنبه 15 مهر 1391, 11:56 صبح
سلام
با این کد تمام محتویات جدول ها خالی میشه
exec sp_MSforeachtable 'delete from?'
ولی فیلد های که کلید اصلی هستند و auto incremetn هستند از صفر شروع نمی شه. راهی وجود داره که مقدار کلید های اصلی تو جدول ها هم از صفر شروع بشه ؟

حمیدرضاصادقیان
شنبه 15 مهر 1391, 12:34 عصر
شما میتوانید دستور Dbcc checkident (http://msdn.microsoft.com/en-us/library/ms176057.aspx) با ترکیب این دستور به مقصودتون برسید.