| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
rogerioclaro2 Experiente

Registrado: Quinta-Feira, 17 de Outubro de 2013 Mensagens: 404
|
Enviada: Qui Jun 22, 2017 2:53 pm Assunto: Deletar Registros[RESOLVIDO] |
|
|
Pessoal, boa tarde!
Preciso deletar registros da tabela fornecedores, porém so posso deletar quando não houver registros de fk na tabela contasapagar
Alguem pode dar um exemplo?
Desde ja meu obrigado. 
Editado pela última vez por rogerioclaro2 em Ter Jul 04, 2017 3:42 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Jun 22, 2017 3:07 pm Assunto: |
|
|
Como está com FK, uma opção seria fazer o delete em ambas as situações, uma vez que desde que banco não esteja configurado para Cascade Delete, será apresentado um erro impedindo a exclusão do registro do fornecedor, ai para não exibir um erro "estranho" para o usuário, você pode tratar esse erro na aplicação para exibir um erro apresentável ao usuário.
Outra opção seria fazer isso através de um IF, no SQL Server ficaria assim por exemplo:
| Código: | IF NOT EXISTS(SELECT 1
FROM dbo.Fornecedores
INNER JOIN dbo.ContasAPagar
ON Fornecedores.ID_Fornecedor = ContasAPagar.ID_Fornecedor
WHERE Fornecedores.ID_Fornecedor = x)
BEGIN
DELETE Fornecedores
WHERE ID_Fornecedor = x
END |
|
|
| Voltar ao Topo |
|
 |
rogerioclaro2 Experiente

Registrado: Quinta-Feira, 17 de Outubro de 2013 Mensagens: 404
|
Enviada: Qui Jun 22, 2017 3:17 pm Assunto: |
|
|
| leo_cj escreveu: | Como está com FK, uma opção seria fazer o delete em ambas as situações, uma vez que desde que banco não esteja configurado para Cascade Delete, será apresentado um erro impedindo a exclusão do registro do fornecedor, ai para não exibir um erro "estranho" para o usuário, você pode tratar esse erro na aplicação para exibir um erro apresentável ao usuário.
Outra opção seria fazer isso através de um IF, no SQL Server ficaria assim por exemplo:
| Código: | IF NOT EXISTS(SELECT 1
FROM dbo.Fornecedores
INNER JOIN dbo.ContasAPagar
ON Fornecedores.ID_Fornecedor = ContasAPagar.ID_Fornecedor
WHERE Fornecedores.ID_Fornecedor = x)
BEGIN
DELETE Fornecedores
WHERE ID_Fornecedor = x
END |
|
Obrigado leo pela resposta..
a mensagem e tratada, preciso deletar somente os que não tem lançamentos.
| Código: | DELETE FROM fornecedor f
WHERE not EXISTS (SELECT * FROM contapagar C
WHERE c.fornecedor = f.codigo) |
pensei em algo assim o que vocês acham |
|
| Voltar ao Topo |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Jun 22, 2017 3:24 pm Assunto: |
|
|
Entendi, achei que era para implementar na tela quando o usuário clicasse para excluir um fornecedor.
Nessa situação, esse jeito que você está pensando em fazer é o que eu faria. |
|
| Voltar ao Topo |
|
 |
|