Oracle - SECUENCIA COMO FOREIGN KEY

 
Vista:

SECUENCIA COMO FOREIGN KEY

Publicado por oscar (10 intervenciones) el 09/05/2006 23:35:59
hola

tengo dos tablas, una de ella tiene un PRIMARY KEY a la que tengo que meter el valor de una secuencia, y la otra tabla tiene un FOREIGN KEY a la primera tabla. Las inserciones a ambas se hace desde una interface Basic, mi duda es la siquiente, si hago:

try
connection.starttrasaction;
INSERT INTO TABLA1 ( PK ) values ( mysecuencia.nextval );
Instrucciones varias.....
id_tabla1 = get_resultado_de (' SELECT MAX( PK ) FROM TABLA1' )
INSERT INTO TABLA2 ( FK ) values ( id_tabla1 );
connection.commit
catch
connection.rollback
....

si entre la ejecucion del INSERT de la TABLA1, y el segundo INSERT a la TABLA2, otra instacia del programa u otro proceso hace la misma operacion, el resultado del SELECT MAX( PK ) FROM TABLA1' no sera el correcto.

ahora si hago:
id_tabla1 = get_resultado_de (' SELECT mysecuencia.nextval FROM DUAL' )
INSERT INTO TABLA1 ( PK ) values ( id_tabla1 );
Instrucciones varias.....
INSERT INTO TABLA2 ( FK ) values ( id_tabla1 );

pero si ocurre una excepcion, se estaria desperdiciando una secuencia, no es asi?
como seria lo correcto??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder