Estou tentando fazer uma exclusão que envolve 2 tabelas, no caso é uma tabela de vendas, onde tenho a tabela NOTA e ITEM_NOTA…
segue o que eu tentei fazer…
DELETE FROM item_nota
WHERE item_nota.numero_nota IN (SELECT nota.numero_nota FROM nota WHERE nota.numero_nota = 7 )
//ou
delete from item_nota USING nota
WHERE item_nota.numero_nota = nota.numero_nota and nota.numero_nota = 8
Só que no exemplo, ele exclui só da tabela item_nota, e não exclui da tabela nota. Como é um cancelamento de venda, tem que excluir das 2 ao mesmo tempo.
No caso a tabela ITEM_NOTA deve ter uma chave estrangeira vindo da tabela NOTA, então porque você não adiciona “ON DELETE CASCADE” nessa chave, assim basta você excluir a NOTA que o próprio banco de dados excluirá todos os ITEM_NOTA relacionados a ela.
Sim salomão, na tabela nota, tem a coluna numero_nota, que tem na tabela item_nota como chave estrangeira…
Mas como faço esse delete em sql que vc falou ?
Pessoal, tem um problema com o cascade…
ao excluir a nota, ele exclui o produto tb, pois na tabela item_nota tem o codigo do produto…
como resolver isso?
Tente usar uma trigger. Ao excluír da tabela A, a trigger é acionada e exclui da tabela B. Como a trigger faz parte da transação, se a exclusão da tabela B falhar por algum motivo, ocorre o rollback na exclusão da tabela A.
[quote=nathanRayden]Pessoal, tem um problema com o cascade…
ao excluir a nota, ele exclui o produto tb, pois na tabela item_nota tem o codigo do produto…
como resolver isso?[/quote]
Sugiro revisar sua modelagem, pois isso não era pra acontecer já que você alterou somente a constraint da chave estrangeira entre as tabelas NOTA e ITEM_NOTA…
[quote=SalomaoNeto][quote=nathanRayden]Pessoal, tem um problema com o cascade…
ao excluir a nota, ele exclui o produto tb, pois na tabela item_nota tem o codigo do produto…
como resolver isso?[/quote]
Sugiro revisar sua modelagem, pois isso não era pra acontecer já que você alterou somente a constraint da chave estrangeira entre as tabelas NOTA e ITEM_NOTA…
[/quote]
Olá, concordo com o amigo SalomaoNeto, nesta caso você poderia dar uma olhada se você não fez uma constraint de itens da noa com produtos do seu banco com a flag
ON DELETE CASCADE
pois somente isso no meu ver poderia apagar os produtos do cadastro, pelomenos é o que eu pude pensar no momento, mas vale a pena dar uma olhada nas constraints de produtos e itens_nota.
Desculpe a demora para responder, mas a resolução era esta mesma demonstrada por vcs, e o fato de estar excluindo o produto tambem, era pq na minha classe produto estava relacionada com cascade tb com a classe item_nota, aí foi só retirar…
Obrigado a todos!