PDA

View Full Version : تغییر یک فیلد در کل بانک



طبیب دل
چهارشنبه 23 شهریور 1390, 11:32 صبح
با سلام به دوستان
من در بانکم فیلدی دارم که در تعدادی از جداول وجود داره حالا اگر بخوام این فیلد رو در تمام جداول تغییر بدم و یا حذف کنم ایا حتما باید برای تک تک جداول دستور delete یا update بنویسم یا راه حل دیگه ای هم دارد؟
چی کار کنم؟
با تشکر

ym3015
یک شنبه 27 شهریور 1390, 19:02 عصر
سلام
تا جایی که من میدونم SQL مثل ویژوال استادیو بهتون امکانات Refactor را نمیده، ولی یه راه هست که ممکنه به کارتون بیاد، البته اگه اولا توی دیتابیس فیلد یا جدول دیگه ای نباشه که به اون نام باشه، ثانیاً چدوالتون همگی خالی باشه (پون بعد از اجرا همه ی دیتابیس خالی میشه)
راه حل هم اینه:
توی قسمت Generate Script از کل دیتابیس یک اسکریپت بگیرید، بعد توی اون اسکریپت اون اسامی که میخواهید را Replace کنید و اسکریپت را اجرا کنید ...

Galawij
یک شنبه 27 شهریور 1390, 19:36 عصر
تا جایی که من میدونم SQL مثل ویژوال استادیو بهتون امکانات Refactor را نمیده،
شناخت شما از SQL کم هست!!
برای این کار باید اسم فیلدتان در همه جداول یکی باشد، مثال: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'')'
جهت کسب اطلاعات بیشتر به این لینک (http://barnamenevis.org/showthread.php?296751-خالی-کردن-جداول-Database/page2) مراجعه کنید.

babak2000
دوشنبه 15 مهر 1392, 20:35 عصر
شناخت شما از SQL کم هست!!
برای این کار باید اسم فیلدتان در همه جداول یکی باشد، مثال: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'')'
جهت کسب اطلاعات بیشتر به این لینک (http://barnamenevis.org/showthread.php?296751-خالی-کردن-جداول-Database/page2) مراجعه کنید.

دوستان میشه یه کمی در مورد کد بالا توضیح بدید میخوام نام یک ستون را در تمامی جداول و ویوهای دیتا بیس تغییر بدیم

چه دستوری باید بنویسیم منظور از ppp یا qqq و aaa در دستور بالا چی هستش

babak2000
دوشنبه 15 مهر 1392, 23:46 عصر
پیدا کردم تغییر نام ستون 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'



البته بعد از اجرا دستور ستون اول را در یک کوئری جدید کپی کرده و اجرا نمایید