Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fantcha

stored procedure para editar e apagar dados em duas tabelas

Recommended Posts

queria saber como fazer essa stored procedure. é que eu tenho uma tabela que tem como chave estrangeira uma outra tabela. eu queria saber como fazer essa SP para conseguir editar e apagar os dados nas duas tabelas. ex.

tenho uma tabela matricula e outra aluno. ao cadastrar o aluno o id desse aluno fica como FK da tabela matricula. então eu queria editar ou deletar os dados das duas tabelas simultaneamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites
CREATE TRIGGER 
  tg_Cliente_Excluir 
ON 
  Cliente 
INSTEAD OF DELETE
AS
DELETE FROM Cliente WHERE ClienteID IN (SELECT ClienteID FROM deleted)
DELETE FROM ClienteTelefone WHERE ClienteID IN (SELECT ClienteID FROM deleted)

 

O exemplo acima irá remover todos os telefone(s) do(s) cliente(s) da tabela ‘ClienteTelefone’ antes de remover todos os clientes (Cliente) e esta TRIGGER está sendo aplicada a tabela ‘Cliente’. Repare que está sendo utilizado a instrução INSTEAD OF que em vez excluir (DELETE) o registro pela ação irá excluir ao final da TRIGGER.

 

Cria uma procedure chamando sua trigger e sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O trigger é um objeto que você cria e deixa lá, você não precisa chamar como um método como seri ano caso de uma SP. Você cria um trigger no evento UPDATE da tabela pai e o trigger automaticamente vai se ativar e realizar o código escrito nele.

 

http://sqlcomoumtodo.wordpress.com/2007/10/17/criando-trigger-em-sql/

http://www.macoratti.net/sql_trig.htm

http://www.devmedia.com.br/desenvolvendo-triggers-em-sql-server-oracle-firebird-e-postgres/5625

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui resolver as stored procedures

para editar fiz assim

 

ALTER PROCEDURE [dbo].[EDITAR_ALUNO]
(

--tabela aluno
@id_aluno int
,@nomeAluno varchar (100)

--tabela matricula

,@numMatricula int

)

 

AS
UPDATE aluno
SET
nomeAluno = @nomeAluno
where id_aluno = @id_aluno

update matricula
set numMatricula = @numMatricula

where id_aluno = @id_aluno

 

 

e o SP para apagar

ALTER PROCEDURE [dbo].[APAGA_ALUNO]
(
@id_aluno int
)

AS

delete from matricula
where id_aluno = @id_aluno

delete FROM aluno
where id_aluno = @id_aluno

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.