2009-07-07 2 views

ответ

1

построить на код Ричарда:

SELECT 
'ALTER TABLE ' + object_name(parent_obj) + ' DROP CONSTRAINT ' + object_name(id),* FROM sysobjects WHERE xtype IN ('F', 'PK') 

Вы можете запустить выход в QA & смотреть дб маслобойка, как это превращает таблицы в кучах

+0

Спасибо, как мы можем сделать у меня есть еще один вариант тоже - выберите 'Alter Table' + table_name + 'Капля Constraint' + constraint_name - от information_schema.TABLE_CONSTRAINTS где Constraint_type как 'F' % - объединение - выберите 'Alter Table' + table_name + 'Капля Constraint' + constraint_name - от information_schema.TABLE_CONSTRAINTS где Constraint_type как 'P' % , потому что мне нужно удалить первую forgeinkey и после того, как первичный ключ – KuldipMCA

+0

Done ниже запроса выберите «Alter Таблица '+ Table_Name +' Ограничение перетаскивания '+ Constraint_Name from information_schema.TABLE_CONSTRAINTS заказать Constraint_type – KuldipMCA

0

Вы можете выбрать строки из таблицы dbo.sysobjects с помощью xtype in ('F', 'PK') и для каждой строки сгенерировать соответствующий оператор alter table. Однако я бы сначала спросил, почему вы хотите это сделать? Ограничения очень важны по ряду причин.

+0

я хочу, чтобы удалить все contstraints и создавать все новые ограничения , когда когда-либо я удалю pk, тогда он даст мне ошибку, которая удалит первый fk, который является основным problme – KuldipMCA

+0

Как насчет того, чтобы просто сбросить все FK, а затем повторно создать их? –

0

Вы можете найти ограничение, перечисленное в sysobjects таблице:

SELECT * FROM sysobjects WHERE xtype IN ('F', 'PK') 

Используйте курсор Переберите соответствующие записи, построить оператор SQL в строке, которая будет удалять каждое ограничение и EXEC() заявление ,