شاید این کد کمکتون کنه. البته به جای 'myParentTable' باید نام جدول parent رو بنویسید. :wink:
البته فکر نمی کنم برای این قصدی که شما دارید پاک کردن constraint ها تنها راه حل و یا شاید بهترین راه حل باشه . در هر صورت این کد تمام ارجاعاتی که مثلا به جدول myParentTable شده رو حذف می کنه
DECLARE @ParentTable varchar(20)
set @ParentTable = 'myParentTable'
DECLARE @fkname varchar(60) , @ct varchar(60)
DECLARE fk_cursor CURSOR FOR
select fk.name fkName,ct.name childTable from sysforeignkeys sf
join sysobjects fk on fk.id=sf.constid
join sysobjects pt on pt.id=sf.rkeyid
join sysobjects ct on ct.id=sf.fkeyid
where pt.name=@ParentTable
OPEN fk_cursor
FETCH NEXT FROM fk_cursor INTO @fkname,@ct
WHILE @@FETCH_STATUS = 0
BEGIN
exec ('alter table ' + @ct + ' drop constraint ' + @fkname)
FETCH NEXT FROM fk_cursor INTO @fkname,@ct
END
CLOSE fk_cursor
DEALLOCATE fk_cursor
GO
فکر نمی کنم کد پیچیده ای باشه ولی در هر صورت اگه با جائیش مشکل داشتید من در خدمتم. :oops:
اما برای ایجاد مجدد fk ها آیا fk دوباره به همان صورت قبلی ایجاد می شوند؟