[quote=Granella]Olá!
Caso o incremento da PK esteja sendo feito por sequence você pode recuperar o valor corrente da sua sessão com
SEQ_ALUNO.CURRVAL
assim basta inserir
INSERT INTO ALUNO (ALUNO_ID, NOME, ENDERECO) VALUES (SEQ_ALUNO.NEXTVAL, 'NOME', 'ENDEREÇO');
INSERT INTO PAGAMENTO (PAGAMENTO_ID, ALUNO_ID, DESCRICAO) VALUES (SEQ_PAGAMENTO.NEXTVAL, SEQ_ALUNO.CURRVAL, 'DESCRIÇÃO');
Há a possibilidade de fazer com SP (stored procedure) utilizando-se da cláusula RETURNING
CREATE PROCEDURE PROC_INSERT_ALUNOPGTO(P_NOME ALUNO.NOME%TYPE, P_ENDERECO ALUNO.ENDERECO%TYPE, P_DESCRICAO PAGAMENTO.DESCRICAO%TYPE) AS
V_ID_ALUNO ALUNO.ALUNO_ID%TYPE;
BEGIN
INSERT INTO ALUNO (NOME, ENDERECO) VALUES (P_NOME, P_ENDERECO) RETURNING ALUNO_ID INTO V_ID_ALUNO;
INSERT INTO PAGAMENTO (ALUNO_ID, DESCRICAO) VALUES (V_ID_ALUNO, P_DESCRICAO);
END;
/
Com SP poderia utilizar CURRVAL também ao invés de RETURNING, depende da sua necessidade.
Uma outra forma seria com TRIGGER no evento AFTER INSERT da tabela ALUNO
CREATE TRIGGER TRG_AI_ALUNO
AFTER INSERT ON ALUNO
FOR EACH ROW
BEGIN
INSERT INTO PAGAMENTO (ALUNO_ID, DESCRICAO) VALUES (:NEW.ALUNO_ID, 'DESCRIÇÃO');
END;
Bom, essas são as formas de recuperar que eu conheço, espero que te ajude.
Até![/quote]
Cara muito obrigado mesmo, Acho que esse currval deve resolver, já tinha ouvido alguma coisa a respeito mas só que não sabia como usar.
Valeu cara, vou testar, qualquer coisa eu pergunto denovo.
Até mais.
E mais uma vez obrigado.