Jump to content


Photo

Exclusão De Chave Estrangeira


  • Faça o login para participar
1 reply to this topic

#1 brilhantetk

brilhantetk

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Masculino
  • Localidade:São Leopoldo - RS - Brasil
  • Interesses:Desenvolvimento PHP / MySql

Posted 11/01/2010, 13:49

Alguém sabe um comando para excluir todas as chaves estrangeiras de uma base de dados??
Rafael Coimbra Brilhante
Desenvolvedor PHP
e-mail/MSN: brilhantetk@gmail.com
Fone: (51) 8411 5995
São Leopoldo - RS - Brasil

#2 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 22/01/2010, 13:50

Como diria um velho amigo meu (Jack, rs), vamos por partes!

Este comando retorna todos objetos existentes no seu Banco de Dados:
select * from sysobjects


Então dessa forma vamos criar um "cursor" (loop) para caminharmos dentro
desses registros e assim executar-mos um script para alterar as Constraints:
declare @parent char(50) // declarando variável que receberá o nome da tabela a ser alterada
declare @name char(50) // declarando variável que receberá o nome da coluna a ser alterada

declare crsFks cursor for // declaração do cursor
select object_name(parent_obj) as nomeTabela, [name] as nomeFK
from sysobjects
where xtype = 'F' // o select retorna os registros por onde o cursor ira caminhar

open crsFks // iniciando o cursor
fetch next from crsFks into @parent, @name // indo para o 1 registro dentro do cursor

while @@fetch_status = 0 // enquando não for o final dos registros
begin
exec('alter table '+ @parent +' drop constraint '+ @name) // executa o comando de alterar a tabela que contem uma constraint
fetch next from crsFks into @parent, @name // vai para o próximo registro
end

close crsFks // fecha o cursor
deallocate crsFks // desaloca o espaço utilizado


Ah exite também um outro camando interessante, mas não fiz testes para averiguar:
select * from sysforeignkeys
Este comando retorna todas FKs dentro do seu Banco de Dados.
Não sei se podem ser excluidas diretamente daqui, não tenho acesso aqui no trabalho ao BD então não consigui
fazer o teste, e como nunca passei por esta situação não tive experiência, =\!

Edição feita por: Renan L. Queiroz, 22/01/2010, 13:51.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq