Alguém sabe um comando para excluir todas as chaves estrangeiras de uma base de dados??
Exclusão De Chave Estrangeira
Started By brilhantetk, 11/01/2010, 13:49
1 reply to this topic
#1
Posted 11/01/2010, 13:49
Rafael Coimbra Brilhante
Desenvolvedor PHP
e-mail/MSN: brilhantetk@gmail.com
Fone: (51) 8411 5995
São Leopoldo - RS - Brasil
Desenvolvedor PHP
e-mail/MSN: brilhantetk@gmail.com
Fone: (51) 8411 5995
São Leopoldo - RS - Brasil
#2
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:
Então dessa forma vamos criar um "cursor" (loop) para caminharmos dentro
desses registros e assim executar-mos um script para alterar as Constraints:
Ah exite também um outro camando interessante, mas não fiz testes para averiguar:
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, =\!
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 sysforeignkeysEste 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:
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)