Apagar CONSTRAINT sem saber o nome

17/11/2010

0

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

Alexandre Henzen

Alexandre Henzen

Responder

Posts

23/11/2010

Jair N.

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";

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar