مشکل در حذف constraint در زمان حذف فیلد
دوستان من فیلدی دارم به نام عنوان . و برای این فیلد یک مقدار default معرفی کردم
زمانی که می خوام این فیلد رو توسط کد زیر حذف کنم با خطای زیر مواجه می شم
طی جستجویی که من در گوگل کردم متوجه شدم که ابتدا باید constraint این فیلد رو خذف کنم تا بتونم فیلد رو حذف کنم که من این کارو کردم و جواب داد
اما مشکل اینجاست که اسم constraint فیلد نمی دونم چه شکلی هست چون متغیر و به شکل زیر نوشته می شه
حالا چطوری می تونم اسم constraint یک فیلد رو بدست بیارم که اول اونو حذف کنم و بعد فیلدو
ALTER Table table_1 DROP column عنوان
خطا :
Msg 5074, Level 16, State 1, Line 1
The object 'DF_Table_1_عنوان' is dependent on column 'عنوان'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE DROP COLUMN عنوان failed because one or more objects access this column.
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
نقل قول:
حالا چطوری می تونم اسم constraint یک فیلد رو بدست بیارم که اول اونو حذف کنم و...
سلام
فکر نکنم دستوری برای اینکه اسم constraint یک فیلد رو بشه بدست آورد باشه.یک دستور هم برای حذف Default از یک Column هست به نام sp_unbindefault که درست اجرا نمی شه!!
اما با جوین کردن جدولهای Sysobjects و syscolumns و sysconstraints میشه اون رو پیدا کرد.
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
لطف می کنید یک مثال بزنید
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
اگرچه یاد دادن ماهیگیری بهتر از خود ماهیگیری است !!!! ولی
select
t3.name as ColName,
t2.name as DefName
from Sysobjects t1
join Sysobjects t2 on t1.id=t2.parent_obj
join syscolumns t3 on t2.id=t3.cdefault
where t1.name='TBLNAME' and t3.name='COLUMNNAME'
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
اول sp_helpconstraint بگیرین تا نام Constraint بدست بیاد بعد با دستور Alter table...drop constraint حذفش کنین
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
با تشکر
فقط یه مسئله دیگه من به چه شکل می تونم بگم فقط constraint یک فیلد رو بده
من به شکل زیر نویشتم جواب نداد
sp_helpconstraint "tbl_amlak.Archive"
در ضمن زمان اجرای این دستور در واقع دو Select انجام می شه من چطوری می تونم بگم نتیجه select دوم رو توی برنامم بدست بیارم
تست کردم نتیجه select اول نمایش داده می شه
GridView1.DataSource = Dst
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
ببینید Query گرفتن از CONSTRAINT_COLUMN_USAGE یا CONSTRAINT_TABLE_USAGE کمکتون میکنه؟
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
آقای ثباتی لطف می کنید نحوه نوشتن کوئریشو بنویسید ؟ با تشکر فراوان
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
دوستان موفق شدم این کارو انجام بدم برای اینکه تاپیک بی نتیجه نمونه کدشو می ذارم تا شاید کسی بهش نیاز پیدا کنه
DECLARE @default sysname
SELECT @default = object_name(default_object_id)
FROM sys.columns
WHERE object_id = object_id('dbo.mytable')
AND name = 'mycolumn'
select @default as 'Fld_Constraint'
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
نقل قول:
دوستان موفق شدم این کارو انجام بدم برای اینکه تاپیک بی نتیجه نمونه کدشو می ذارم تا شاید کسی بهش نیاز پیدا کنه
فکر می کنم روشی که من در بند 4 نوشتم هم نتیجه میداده ضمن اینکه با روش شما هم زیاد تفاوتی نداشته.
فقط اینکه از روش شما نمیشه در ورژن 2000 استفاده کرد چون default_object_id رو نمیشناسه.
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
روش بند 4 رو تست کردم جواب نداد
نقل قول: مشکل در حذف constraint در زمان حذف فیلد
میشه بگید مشکلش چی بود چون من هم در 2000 هم در 2008 تستش کردم .