با سلام به دوستان
من در بانکم فیلدی دارم که در تعدادی از جداول وجود داره حالا اگر بخوام این فیلد رو در تمام جداول تغییر بدم و یا حذف کنم ایا حتما باید برای تک تک جداول دستور delete یا update بنویسم یا راه حل دیگه ای هم دارد؟
چی کار کنم؟
با تشکر
با سلام به دوستان
من در بانکم فیلدی دارم که در تعدادی از جداول وجود داره حالا اگر بخوام این فیلد رو در تمام جداول تغییر بدم و یا حذف کنم ایا حتما باید برای تک تک جداول دستور delete یا update بنویسم یا راه حل دیگه ای هم دارد؟
چی کار کنم؟
با تشکر
سلام
تا جایی که من میدونم SQL مثل ویژوال استادیو بهتون امکانات Refactor را نمیده، ولی یه راه هست که ممکنه به کارتون بیاد، البته اگه اولا توی دیتابیس فیلد یا جدول دیگه ای نباشه که به اون نام باشه، ثانیاً چدوالتون همگی خالی باشه (پون بعد از اجرا همه ی دیتابیس خالی میشه)
راه حل هم اینه:
توی قسمت Generate Script از کل دیتابیس یک اسکریپت بگیرید، بعد توی اون اسکریپت اون اسامی که میخواهید را Replace کنید و اسکریپت را اجرا کنید ...
شناخت شما از SQL کم هست!!تا جایی که من میدونم SQL مثل ویژوال استادیو بهتون امکانات Refactor را نمیده،
برای این کار باید اسم فیلدتان در همه جداول یکی باشد، مثال:execsp_msforeachtable N'
IF EXISTS(SELECT 1 FROM sys.columns WHERE object_id=OBJECT_ID(''?'') AND name = ''Col1'')
EXEC (''UPDATE ? SET Col1= case when Col1 = ''''ppp'''' then ''''qqq'''' when Col1 = ''''aaa'''' then ''''xxx'''' end'')'
جهت کسب اطلاعات بیشتر به این لینک مراجعه کنید.
پیدا کردم تغییر نام ستون Phone به Telephone
select 'EXEC sp_rename N''' + sch.name + '.' + so.name + '.Phone'', N''TelePhone'', N''COLUMN'';',
*
from sys.objects so
join sys.columns sc on so.object_id = sc.object_id
join sys.schemas sch on sch.schema_id = so.schema_id
where sc.name = 'Phone'
البته بعد از اجرا دستور ستون اول را در یک کوئری جدید کپی کرده و اجرا نمایید