Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uses BDP3G06;
- CREATE PROC removeAutor
- @Nome nvarchar(200)
- AS
- BEGIN TRAN
- TRY
- -- remove da tabela Actor
- DELETE FROM A FROM Actor A
- INNER JOIN Pessoa P ON A.RefIdPessoa = P.IDPessoa
- WHERE P.Nome = @Nome
- -- remove da tabela pessoa apenas se este nao for referenciado em mais nenhum sitio
- DELETE FROM Pessoa
- WHERE Nome = @Nome AND IDPessoa NOT IN
- (
- SELECT RefIdPessoa FROM Realizador
- UNION
- SELECT RefIdPessoa FROM Autor
- UNION
- SELECT RefIdPessoa FROM Interprete
- )
- COMMIT
- CATCH
- ROLLBACK;
- CREATE PROC adicionaActorAoFilme
- @Nome nvarchar(200)
- @Titulo nvarchar(250)
- AS
- DECLARE @ActorID int
- DECLARE @ObraID int
- DECLARE @OrdemNext int
- BEGIN TRAN
- TRY
- -- verificar se a pessoa nao existe na bd e se nao existir
- IF EXISTS (SELECT IDPessoa FROM Pessoa WHERE Nome = @Nome)
- BEGIN
- -- se existir extrai IDPessoa desta
- SET @ActorID = SELECT IDPessoa FROM Pessoa WHERE Nome = @Nome
- END
- ELSE
- BEGIN
- -- insere a "nova pessoa" na tabela Pessoa extrai o IDPessoa desta
- INSERT INTO Pessoa (Nome) VALUES (@Nome)
- SET @ActorID = @@IDENTITY
- END
- -- extrai o ID da obra requerida e a ordem do proximo actor a adicionar
- SET @ObraID = SELECT IDObra FROM Obra WHERE Titulo = @Titulo
- SET @OrdemNext = (SELECT MAX(Ordem) FROM Actor WHERE RefIDObra = @ObraID) + 1
- -- insere a "nova pessoa" como actor do filme da obra anterior
- INSERT INTO Actor (RefIDPessoa, RefIDObra, Ordem) VALUES (@ActorID, @ObraID, @OrdemNext)
- COMMIT
- CATCH
- ROLLBACK;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement