Mauro André Postado 19 de Fevereiro de 2008 Tópicos Que Criei: 65 Tópicos/Dia: 0.01 Meu Conteúdo: 333 Conteúdo/Dia: 0.05 Reputação: 2 Pontos/Conquistas: 2.309 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 46 Dispositivo: Windows Denunciar Compartilhar Postado 19 de Fevereiro de 2008 Pessoal, Como faço para desabilitar as constraint de uma tabela no SQL Server 2000 e como a habilito novamente? É que tenho que apagar na TMOVCFO o cliente código M102738 e da conflito na Constraint. SQL delete TMOVCFO where codcfo = 'M102738' Erro Server: Msg 547, Level 16, State 1, Line 1 DELETE statement conflicted with TABLE REFERENCE constraint 'FKTMOV_TMOVCFO'. The conflict occurred in database 'CORPORERM', table 'TMOV'. The statement has been terminated. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Mauricio J. T. Postado 19 de Fevereiro de 2008 Tópicos Que Criei: 134 Tópicos/Dia: 0.02 Meu Conteúdo: 1.225 Conteúdo/Dia: 0.19 Reputação: 2 Pontos/Conquistas: 7.400 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Dispositivo: Windows Denunciar Compartilhar Postado 19 de Fevereiro de 2008 use o comando DROP CONSTRAIN svo.nomedaconstraint Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Hugo Postado 19 de Fevereiro de 2008 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 15 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 95 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 19 de Fevereiro de 2008 Para Desabilitar ALTER TABLE TMOV NOCHECK CONSTRAINT FKTMOV_TMOVCFO Para Habilitar ALTER TABLE TMOV CHECK CONSTRAINT FKTMOV_TMOVCFO Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Mauro André Postado 19 de Fevereiro de 2008 Tópicos Que Criei: 65 Tópicos/Dia: 0.01 Meu Conteúdo: 333 Conteúdo/Dia: 0.05 Reputação: 2 Pontos/Conquistas: 2.309 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 46 Dispositivo: Windows Autor Denunciar Compartilhar Postado 19 de Fevereiro de 2008 Mauricio e Hugo, Obrigado pelas Dicas. Valeu. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Mauricio J. T. Postado 19 de Fevereiro de 2008 Tópicos Que Criei: 134 Tópicos/Dia: 0.02 Meu Conteúdo: 1.225 Conteúdo/Dia: 0.19 Reputação: 2 Pontos/Conquistas: 7.400 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Dispositivo: Windows Denunciar Compartilhar Postado 19 de Fevereiro de 2008 A do hugo e melhor, pois a minha vc teria que criar novamente. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 21 de Fevereiro de 2008 Tópicos Que Criei: 899 Tópicos/Dia: 0.14 Meu Conteúdo: 8.841 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.572 Conteúdo Resolvido: 0 Dias Ganho: 194 Status: Offline Idade: 52 Dispositivo: Android Denunciar Compartilhar Postado 21 de Fevereiro de 2008 Se está dando erro de constraint quando vai deletar, ao desativar a mesma, deletar, e reativar, vai dar erro da mesma forma. Se realmente vc não quer mais este registro na TMOVCFo, vc teria que limpar antes o campo IDMOVCFO da TMOV, deixando-o nulo. Assim, vc poderia deletar a TMOVCFO diretamente sem ter que desabilitar qualquer constraint. CUIDADO. NÃO SAIAM DESABILITANDO CONSTRAINTS NO BANCO DE DADOS ALEATORIAMENTE. TEM QUE TER CERTEZA DO QUE ESTÁ FAZENDO PRA ALTERAR A ESTRUTURA DO BANCO. ISSO É A SEGURANÇA DA INTEGRIDADE DO MESMO. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Emanuel Peixoto Postado 22 de Fevereiro de 2008 Tópicos Que Criei: 1 Tópicos/Dia: 0.00 Meu Conteúdo: 152 Conteúdo/Dia: 0.02 Reputação: 0 Pontos/Conquistas: 770 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 44 Denunciar Compartilhar Postado 22 de Fevereiro de 2008 Só pra completar o comentário do jair, realmente vai dar erro no momento da recriação da constraint, isso porque ela faz uma nova checagem, mas, para isso tem uma alternativa que é o" WITH NOCHECK" no momento da criação/recriação da constraint. Esse recurso só serve pra isso mesmo, pra ignorar a checagem no momento da criação da constraint. Depois de criada, a constraint fará o seu papel normalmente. Também recomendo cautela ao manipular constraints. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Eudemar Postado 22 de Fevereiro de 2008 Tópicos Que Criei: 79 Tópicos/Dia: 0.01 Meu Conteúdo: 611 Conteúdo/Dia: 0.09 Reputação: 2 Pontos/Conquistas: 3.847 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 54 Denunciar Compartilhar Postado 22 de Fevereiro de 2008 A melhor forma para isso é sentar o dedo no banco... quando ele der a mensagem: DELETE statement conflicted with TABLE REFERENCE constraint 'FKTMOV_TMOVCFO'. The conflict occurred in database 'CORPORERM', table 'TMOV'. vá até a tabela TMOV e execute o delete do CFO, aí ele vai te dar outra mensagem parecida, vá até a outra tabela, apague os registros de referencia e assim sucessivamente até que não dê mais erro, depois volte e vá apagando tudo o que ficou para trás. desabilitar constrains, e reabilitá-las sem checagem, pode dar problema no futuro, este é um trabalho braçal, mas é melhor que seja feito assim. é só uma sugestão um abraço Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jamensson Postado 23 de Fevereiro de 2010 Tópicos Que Criei: 23 Tópicos/Dia: 0.00 Meu Conteúdo: 140 Conteúdo/Dia: 0.02 Reputação: 3 Pontos/Conquistas: 983 Conteúdo Resolvido: 0 Dias Ganho: 3 Status: Offline Idade: 41 Denunciar Compartilhar Postado 23 de Fevereiro de 2010 Se está dando erro de constraint quando vai deletar, ao desativar a mesma, deletar, e reativar, vai dar erro da mesma forma. Se realmente vc não quer mais este registro na TMOVCFo, vc teria que limpar antes o campo IDMOVCFO da TMOV, deixando-o nulo. Assim, vc poderia deletar a TMOVCFO diretamente sem ter que desabilitar qualquer constraint. CUIDADO. NÃO SAIAM DESABILITANDO CONSTRAINTS NO BANCO DE DADOS ALEATORIAMENTE. TEM QUE TER CERTEZA DO QUE ESTÁ FAZENDO PRA ALTERAR A ESTRUTURA DO BANCO. ISSO É A SEGURANÇA DA INTEGRIDADE DO MESMO. Achei um script bem interessante nas minhas coisas: Serve tanto para desabilitar todas as constraint como tb para outras operações... --Para desabilitar todas as constraints e triggers de todas as tabelas do banco: exec sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT ALL" exec sp_msforeachtable "ALTER TABLE ? DISABLE TRIGGER ALL" --Para habilitar: exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL" exec sp_msforeachtable "ALTER TABLE ? ENABLE TRIGGER ALL" Abraço. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Frederico Postado 23 de Fevereiro de 2010 Tópicos Que Criei: 11 Tópicos/Dia: 0.00 Meu Conteúdo: 1.140 Conteúdo/Dia: 0.21 Reputação: 60 Pontos/Conquistas: 6.161 Conteúdo Resolvido: 0 Dias Ganho: 33 Status: Offline Idade: 42 Dispositivo: Windows Denunciar Compartilhar Postado 23 de Fevereiro de 2010 Bom dia Mauro André Script para desligar constraint declare @comando nvarchar(255) declare drop_pks cursor for select distinct 'alter table ' + (select s22.name from sysobjects s22 where s22.id = s1.fkeyid ) + ' nocheck constraint '+ s2.name comando from sysforeignkeys s1 , sysobjects s2 where s2.id = s1.constid open drop_pks fetch next from drop_pks into @comando while @@fetch_status = 0 begin exec sp_executesql @comando fetch next from drop_pks into @comando end close drop_pks deallocate drop_pks esse liga as constraint declare drop_pks cursor for select distinct 'alter table ' + (select s22.name from sysobjects s22 where s22.id = s1.fkeyid ) + ' check constraint '+ s2.name comando from sysforeignkeys s1 , sysobjects s2 where s2.id = s1.constid open drop_pks fetch next from drop_pks into @comando while @@fetch_status = 0 begin exec sp_executesql @comando fetch next from drop_pks into @comando end close drop_pks deallocate drop_pks Espero ter ajudado []'s Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.