gongoland Posted May 28, 2014 Report Share Posted May 28, 2014 Boa Noite pessoal, estou a fazer um projeto para uma cadeira de base de dados e estou com uma dúvida.. O meu trabalho é sobre uma firma de advogados e eu tenho uma tabela funcionários(onde engloba todos os funcionários) e depois tenho uma tabela advogados e outra func_administrativo e eu queria fazer um trigger que ao adicionar dados na tabela funcionário, depois ia inserir dados ou na tabela advogado ou func_administrativo, consoante a escolha do utilizador, acham que é uma coisa impossível? Link to comment Share on other sites More sharing options...
Rechousa Posted May 28, 2014 Report Share Posted May 28, 2014 Viva, Sim, podes fazê-lo usando CREATE TRIGGER AFTER INSERT. PS: Se nas tabelas advogados e func_administrativo usares um campo AutoNumber (não aconselho, recomendo usares o mesmo ID), atenção que depois do INSERT deves usar SCOPE_IDENTITY em vez de @@IDENTITY para obter o ID do registo inserido na tabela FUNCIONARIOS. Outra abordagem seria criares duas views, uma para advogados, outra para funcionários administrativos, dependendo do tipo de utilizador. Espero ter ajudado, Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa Link to comment Share on other sites More sharing options...
gongoland Posted May 28, 2014 Author Report Share Posted May 28, 2014 Viva, Sim, podes fazê-lo usando CREATE TRIGGER AFTER INSERT. PS: Se nas tabelas advogados e func_administrativo usares um campo AutoNumber (não aconselho, recomendo usares o mesmo ID), atenção que depois do INSERT deves usar SCOPE_IDENTITY em vez de @@IDENTITY para obter o ID do registo inserido na tabela FUNCIONARIOS. Outra abordagem seria criares duas views, uma para advogados, outra para funcionários administrativos, dependendo do tipo de utilizador. Espero ter ajudado, Muito Obrigado pela ajuda 👍 Link to comment Share on other sites More sharing options...
Rechousa Posted May 29, 2014 Report Share Posted May 29, 2014 Depois diz se resultou ou não (para encerrar o tópico) Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa Link to comment Share on other sites More sharing options...
gongoland Posted May 29, 2014 Author Report Share Posted May 29, 2014 (edited) Depois diz se resultou ou não (para encerrar o tópico) Já agora, se pudesse ajudar também na resolução deste procedimeto CREATE PROCEDURE Processos AS DECLARE @IDProcesso INT, @IDCliente INT, @IDFuncionario INT, @NomeProcesso VARCHAR(100), @DescricaoProcesso VARCHAR(200), @ParecerProcesso VARCHAR(100), @EstadoProcesso VARCHAR(20), @DataProcesso DATE DECLARE Cursor_Processo_Forward CURSOR FORWARD_ONLY FOR SELECT ID_Processo,ID_Cliente,ID_Funcionario,Nome_Processo,Descricao_Processo,Parecer_Processo,Estado_Processo,Data_Processo FROM Processo ORDER BY ID_Processo OPEN Cursor_Processo_Forward WHILE @@FETCH_STATUS = 0 BEGIN Insert Into Processo(ID_Processo,ID_Cliente,ID_Funcionario,Nome_Processo,Descricao_Processo,Parecer_Processo,Estado_Processo,Data_Processo) Values(@IDProcesso,@IDCliente,@IDFuncionario,@NomeProcesso,@DescricaoProcesso,@ParecerProcesso,@EstadoProcesso,@DataProcesso) FETCH NEXT FROM Cursor_Processo_Forward INTO @IDProcesso,@IDCliente,@IDFuncionario,@NomeProcesso,@DescricaoProcesso,@ParecerProcesso,@EstadoProcesso,@DataProcesso END CLOSE Cursor_Processo_Forward DEALLOCATE Cursor_Processo_Forward o objectivo era criar um procedimento com um cursor pelo meio, que inserisse um novo processo, o que falta aqui? Edited May 29, 2014 by Rechousa Formatação de código Link to comment Share on other sites More sharing options...
Rechousa Posted May 29, 2014 Report Share Posted May 29, 2014 Olá, Por norma, quando se trata de um problema novo, cria-se um tópico novo 😉 Falta-te fazer o primeiro FETCH dos dados. OPEN Cursor_Processo_Forward -- Falta esta linha: FETCH NEXT FROM Cursor_Processo_Forward INTO @IDProcesso,@IDCliente,@IDFuncionario,@NomeProcesso,@DescricaoProcesso,@ParecerProcesso,@EstadoProcesso,@DataProcesso WHILE @@FETCH_STATUS = 0 Mas uma coisa que não percebi... Estás a obter os dados da tabela PROCESSO, criar um cursor para voltar a inserir os mesmos dados na mesma tabela? Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa Link to comment Share on other sites More sharing options...
gongoland Posted May 29, 2014 Author Report Share Posted May 29, 2014 (edited) Olá, Por norma, quando se trata de um problema novo, cria-se um tópico novo 😉 Falta-te fazer o primeiro FETCH dos dados. OPEN Cursor_Processo_Forward -- Falta esta linha: FETCH NEXT FROM Cursor_Processo_Forward INTO @IDProcesso,@IDCliente,@IDFuncionario,@NomeProcesso,@DescricaoProcesso,@ParecerProcesso,@EstadoProcesso,@DataProcesso WHILE @@FETCH_STATUS = 0 Mas uma coisa que não percebi... Estás a obter os dados da tabela PROCESSO, criar um cursor para voltar a inserir os mesmos dados na mesma tabela? não quis estar a encher o forum com tópicos, peço desculpa 😕 pois se calhar ai é que estou a fazer mal, o objetivo activar o procedimento de forma a inserir um novo processo mas se calhar não estou a fazer da melhor forma.. Edited May 29, 2014 by gongoland Link to comment Share on other sites More sharing options...
Rechousa Posted May 29, 2014 Report Share Posted May 29, 2014 O que pretendes fazer é ter uma stored procedure em que recebe alguns parâmetros e insere um novo registo na tabela PROCESSO? Algo do género?: CREATE PROCEDURE Processos ( @IDProcesso INT, @IDCliente INT, @IDFuncionario INT, @NomeProcesso VARCHAR(100), @DescricaoProcesso VARCHAR(200), @ParecerProcesso VARCHAR(100), @EstadoProcesso VARCHAR(20), @DataProcesso DATE ) AS BEGIN SET NOCOUNT ON; INSERT INTO Processo ( --ID_Processo, ID_Cliente, ID_Funcionario, Nome_Processo, Descricao_Processo, Parecer_Processo, Estado_Processo, Data_Processo ) VALUES ( --@IDProcesso, @IDCliente, @IDFuncionario, @NomeProcesso, @DescricaoProcesso, @ParecerProcesso, @EstadoProcesso, @DataProcesso ); SELECT SCOPE_IDENTITY() AS idProcesso; END Considerei o cenário do campo IDProcesso ser um auto number. Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa Link to comment Share on other sites More sharing options...
gongoland Posted May 29, 2014 Author Report Share Posted May 29, 2014 O que pretendes fazer é ter uma stored procedure em que recebe alguns parâmetros e insere um novo registo na tabela PROCESSO? Algo do género?: CREATE PROCEDURE Processos ( @IDProcesso INT, @IDCliente INT, @IDFuncionario INT, @NomeProcesso VARCHAR(100), @DescricaoProcesso VARCHAR(200), @ParecerProcesso VARCHAR(100), @EstadoProcesso VARCHAR(20), @DataProcesso DATE ) AS BEGIN SET NOCOUNT ON; INSERT INTO Processo ( --ID_Processo, ID_Cliente, ID_Funcionario, Nome_Processo, Descricao_Processo, Parecer_Processo, Estado_Processo, Data_Processo ) VALUES ( --@IDProcesso, @IDCliente, @IDFuncionario, @NomeProcesso, @DescricaoProcesso, @ParecerProcesso, @EstadoProcesso, @DataProcesso ); SELECT SCOPE_IDENTITY() AS idProcesso; END Considerei o cenário do campo IDProcesso ser um auto number. é exatamente isto que queriam muito obrigado mais uma vez, pode fechar o topico 👍 Link to comment Share on other sites More sharing options...
Rechousa Posted May 29, 2014 Report Share Posted May 29, 2014 😉 Pedro Martins Sharing is Knowledge! http://www.linkedin.com/in/rechousa Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now