Array
(
)

Apagar CONSTRAINT sem saber o nome

Korp Ltda
|
MVP
    17 nov 2010

Boa Tarde 
Como eu posso apagar CONSTRAINT´s sem saber qual o nome delas ?
Por exemplo, tenho uma TABELA X e 3 CONSTRAINT´S

ALTER TABLE TABELA_X DROP CONSTRAINT PK__XYZ_71D1E811ALTER TABLE TABELA_X DROP CONSTRAINT PK__XYZ_21321232ALTER TABLE TABELA_X DROP CONSTRAINT PK__XYZ_64534262
Minha divergência é que nunca sei exato o nome das CONSTRAINT e como posso apaga-la, sem consultar os mesmos ?
Não sei se fui claro, mas agradeço as dicas.
Att

Jair A.n.
   - 23 nov 2010

Bom Dia, um dos metodos, seria criar um procedimento, e pegar os nomes das chaves extrangeiras que compõe a tabela, e num processo em loop excluir um a um retornando sua opçao através de uma seleção a exemplo:
     SELECT  sysobjects.name AS nome_foreign_key
       FROM  sysobjects
 INNER JOIN  sysforeignkeys
         ON (sysforeignkeys.constid = sysobjects.id)
 INNER JOIN  syscolumns
         ON (syscolumns.id  = sysforeignkeys.fkeyid)
        AND (syscolumns.colid = sysforeignkeys.fkey)
      WHERE (OBJECT_NAME(sysobjects.parent_obj) = 'TABELA_X')
        AND (sysobjects.xtype = 'F')
        AND (syscolumns.name = 'CAMPO_X')

É onde a entidade "campo_x" poderá ser ou não necessário para este processo de exclusão.
Seria esta sua solução? ou necessáriamente teria que simplesmente excluir todas sem excesão?

Pegando num laço enquanto existir  ALTER TABLE tabela_X DROP CONSTRAINT "nome_foreign_key";