Usuário com melhor resposta
DELETE EM DUAS TABELAS DIFERENTES

Pergunta
-
Como mostro o codigo abaixo queria fazer deletar o mesmo registro em duas tabelas diferentes mais não sei como fazer.
DELETE [ETAPA_NIVEL_GRUPO_ITENS],[ETAPA_GRUPO_ENSINO]
FROM [ETAPA_NIVEL_GRUPO_ITENS],[ETAPA_GRUPO_ENSINO]
WHERE [ETAPA_NIVEL_GRUPO_ITENS].[ID_ETAPA_NIVEL_ENSINO_GRUPO]=[ETAPA_GRUPO_ENSINO].[ID_GRUPO_ENSINO]
AND [ID_GRUPO_ENSINO]=7;Tancredo Almeida
Respostas
-
Boa Noite,
O padrão ANSI não prevê nenhuma implementação que faça a exclusão de um registro em duas tabelas ao mesmo tempo. O SQL Server não tem uma construção desse tipo e não resta alternativas senão excluir os dados em uma tabela para depois excluir em outra (possivelmente dentro de uma transação para manter a atomicidade).
Construções desse tipo são possíveis em MySQL e no Access (acredito eu), mas no SQL Server não é possível de fazê-lo
[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 24 de julho de 2012 23:37
- Marcado como Resposta Harley Araujo quinta-feira, 26 de julho de 2012 11:53
-
Tancredo,
Como o Gustavo disse, você não irá conseguir deletar das duas tabelas ao mesmo tempo. Mas você pode realizar duas deleções utilizando uma tabela temporária de auxilio.
Estou sem SQL Server na minha máquina, mas vou tentar montar um exemplo no notepad para você ter uma ideia do que estou pensando:
SELECT ege.ID_GRUPO_ENSINO INTO #Aux FROM ETAPA_NIVEL_GRUPO_ITENS eng INNER JOIN ETAPA_GRUPO_ENSINO ege ON ege.ID_GRUPO_ENSINO = eng.ID_ETAPA_NIVEL_ENSINO_GRUPO WHERE ege.ID_GRUPO_ENSINO = 7 DELETE eng FROM ETAPA_NIVEL_GRUPO_ITENS eng INNER JOIN #Aux temp ON temp.ID_GRUPO_ENSINO = eng.ID_ETAPA_NIVEL_ENSINO_GRUPO DELETE ege FROM ETAPA_GRUPO_ENSINO ege INNER JOIN #Aux temp ON temp.ID_GRUPO_ENSINO = ege.ID_GRUPO_ENSINO
Veja se isso é útil para você.
[]'s
Philipe Souza
E-mail: Philipe.s.souza@hotmail.com- Marcado como Resposta Harley Araujo quinta-feira, 26 de julho de 2012 11:53
Todas as Respostas
-
Boa Noite,
O padrão ANSI não prevê nenhuma implementação que faça a exclusão de um registro em duas tabelas ao mesmo tempo. O SQL Server não tem uma construção desse tipo e não resta alternativas senão excluir os dados em uma tabela para depois excluir em outra (possivelmente dentro de uma transação para manter a atomicidade).
Construções desse tipo são possíveis em MySQL e no Access (acredito eu), mas no SQL Server não é possível de fazê-lo
[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
- Sugerido como Resposta Gustavo Maia Aguiar terça-feira, 24 de julho de 2012 23:37
- Marcado como Resposta Harley Araujo quinta-feira, 26 de julho de 2012 11:53
-
Tancredo,
Como o Gustavo disse, você não irá conseguir deletar das duas tabelas ao mesmo tempo. Mas você pode realizar duas deleções utilizando uma tabela temporária de auxilio.
Estou sem SQL Server na minha máquina, mas vou tentar montar um exemplo no notepad para você ter uma ideia do que estou pensando:
SELECT ege.ID_GRUPO_ENSINO INTO #Aux FROM ETAPA_NIVEL_GRUPO_ITENS eng INNER JOIN ETAPA_GRUPO_ENSINO ege ON ege.ID_GRUPO_ENSINO = eng.ID_ETAPA_NIVEL_ENSINO_GRUPO WHERE ege.ID_GRUPO_ENSINO = 7 DELETE eng FROM ETAPA_NIVEL_GRUPO_ITENS eng INNER JOIN #Aux temp ON temp.ID_GRUPO_ENSINO = eng.ID_ETAPA_NIVEL_ENSINO_GRUPO DELETE ege FROM ETAPA_GRUPO_ENSINO ege INNER JOIN #Aux temp ON temp.ID_GRUPO_ENSINO = ege.ID_GRUPO_ENSINO
Veja se isso é útil para você.
[]'s
Philipe Souza
E-mail: Philipe.s.souza@hotmail.com- Marcado como Resposta Harley Araujo quinta-feira, 26 de julho de 2012 11:53