Comandos SQL Server 2018
09/08/2018
0
Estou tentando executar um comando para excluir a tabela
Porém ao executar o comando abaixo:
delete from Solicitacoes where Empresa = 1
O SQL Server retorna com a mensagem:
The DELETE statement conflicted with the REFERENCE constraint "FK_COmpras_Solic". The conflict occurred in database "excluir", table "dbo.ItensCompra", column ''''Sequencial''''.
The statement has been terminated.
Acredito que é por causa de alguma chave primária, certo?
Neste caso, qual comando eu posso usar para excluir o registro nas duas tabelas ao mesmo tempo? Verificando se o registro existe nas duas e excluir, lembrando que preciso excluir tudo o que é da empresa 1.
Julio Santos
Post mais votado
10/08/2018
Nesse caso sua QUERY ficaria assim:
DELETE itenscompra WHERE EXISTS (SELECT 1 FROM solicitacoes sol WHERE sol.empresa = 1 AND sol.numerosolic = itenscompra.cotacao)
Para excluir os dados de item (tabela filha).
E depois esse:
DELETE solicitacoes WHERE empresa = 1
Para excluir os dados da tabela pai.
Isso supondo que você não tenha mais nenhum relacionamento.
Grande abraço
Luiz Santos
Mais Posts
09/08/2018
Alex William
Tente usar um INNER JOIN no delete:
DELETE sol, comp FROM solicitacoes sol INNER JOIN compras_solic comp ON comp.cod_solicitacao = sol.codigo WHERE sol.empresa = 1
Algo do tipo, porque tu vais ter que excluir junto com as solicitações, as compras ligadas a ela.
Ou pode quebrar a FK da tabela, mas isso pode acarretar problemas na sua Base de Dados.
P.S.: Essa query que eu passei é exemplo.
09/08/2018
Julio Santos
DELETE it FROM solicitacoes sol INNER JOIN itenscompra it ON it.cotacao = sol.numerosolic WHERE sol.empresa = 1
Porém ele me deu essa outra mensagem
JÁ EXISTE ATENDIMENTO PARA ESSE ITEM
Mensagem 3609, Nível 16, Estado 1, Linha 1
The transaction ended in the trigger. The batch has been aborted.
10/08/2018
Alex Lekao
Para excluir tabela você teria que utilizar drop table "nome da tabela", não sei se entendi bem o que vc esta querendo.
https://docs.microsoft.com/pt-br/sql/t-sql/statements/drop-table-transact-sql?view=sql-server-2017
O delete é utilizado para deleção de conteúdo, embora em alguns caso o recomendado possa ser utilizar o truncate.
https://docs.microsoft.com/pt-br/sql/t-sql/statements/delete-transact-sql?view=sql-server-2017
Abraco.
Clique aqui para fazer login e interagir na Comunidade :)