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
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
Curtir tópico
+ 0
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";
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
Clique aqui para fazer login e interagir na Comunidade :)