Usuário com melhor resposta
Deleção

Pergunta
-
Bom dia!
Estou migrando uma base firebird para SQL, estou com problemas nos relacionamentos , os relacionamentos que estão no firebird não funcionam no sql server, o sql diz que existe múltiplos caminhos enfim, como estou trazendo dados na migração do banco não posso alterar nada. Exemplo
Firebird
Estrutura
Corretora
PontoVenda
Elas se relacionam e existe um cascade com pontovenda com a etrutura e a corretora com a estrutura. isso o SQL nao aceita.
Agora os desenvolvedores nos testes nao conseguem deletar pq estoura FK_controle_estrutura_pontoVenda.
Quando ele mandam um delete na estrutura.
Qual a melhor saida??
Respostas
-
Segue um esboço da trigger:
ALTER TRIGGER [dbo].[controleestrutura_Trg_Instead_Of_Delete] ON [dbo].[controleestrutura] INSTEAD OF DELETE AS BEGIN DELETE p from pontovenda as inner join deleted as d on p.codigopontovenda = d.codigoestrutura; DELETE e from controleestrutura as e inner join deleted as d on e.codigoestrutura = d.codigoestrutura; END
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
Todas as Respostas
-
Bom dia,
Fernando, você pode postar a estrutura das tabelas envolvidas (pelo menos as partes relevantes para a questão) e as mensagens de erro exibidas, bem como o momento em que ocorrem os erros?
Assinatura: http://www.imoveisemexposicao.com.br
-
Olá Fernando, tente os seguintes comandos:
ALTER TABLE dbo.TabelaQueTemARestricao DROP CONSTRAINT FK_controle_estrutura_pontoVenda; GO ALTER TABLE dbo.TabelaQueTemARestricao ADD CONSTRAINT FK_controle_estrutura_pontoVenda FOREIGN KEY (TabelaQueTemARestricao.ChavePrimaria) REFERENCES dbo.outraTabela(EmployeeID) ON DELETE CASCADE
Troque os nomes das tabelas para o nome das tabelas que você tem.
-
-
Fernando, você pode postar o script de criação das FKs?
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Pelo que vi o cascade não está ativo.
Em que momento está ocorrendo o erro? Ao excluir uma estrutura? Ao ativar o cascade? Qual mensagem de erro é exibida?
Assinatura: http://www.imoveisemexposicao.com.br
-
Quando ativo o cascade e vou salvar ele diz que não pode devido a múltiplas referencias
Tabela 'controleestrutura' salva com êxito
Tabela 'pontovenda'
- Não é possível criar a relação 'fk_pontovenda_controleestrutur'.
Introducing FOREIGN KEY constraint 'fk_pontovenda_controleestrutur' on table 'pontovenda' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint or index. See previous errors.
-
Existe alguma outra FK no banco de dados referenciando a tabela controleestrutura e com cascade?
Assinatura: http://www.imoveisemexposicao.com.br
-
-
-
-
Segue um esboço da trigger:
ALTER TRIGGER [dbo].[controleestrutura_Trg_Instead_Of_Delete] ON [dbo].[controleestrutura] INSTEAD OF DELETE AS BEGIN DELETE p from pontovenda as inner join deleted as d on p.codigopontovenda = d.codigoestrutura; DELETE e from controleestrutura as e inner join deleted as d on e.codigoestrutura = d.codigoestrutura; END
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-