Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/11/2013, 15:07
Avatar de xpapachox
xpapachox
 
Fecha de Ingreso: junio-2011
Mensajes: 77
Antigüedad: 12 años, 11 meses
Puntos: 12
Respuesta: funcion con varios inserts

Hola si usas un ID de tipo enter, podrias hacer uso de una Secuencia(SEQUENCE).
Código SQL:
Ver original
  1. /*Secuencia para la tabla principal*/
  2. CREATE SEQUENCE orders_seq
  3. INCREMENT BY 1                   --> Va incrementarse de 1 en 1.
  4. START WITH 100                    --> El valor con el cual va empezar la secuencia, en tu caso seria el ultimo id de tu tabla.
  5. maxvalue 25                      --> Valor maximo
  6. nocache;                            -->No guarda dato en cache.
  7.  
  8.  
  9. /*Secuencia para la tabla detalle.*/
  10. CREATE SEQUENCE order_lines_seq START WITH 200; --> el valor que va empezar el detalle supongamos que es 200.
  11.  
  12.  
  13.  
  14.  
  15. BEGIN
  16.   -- Usar NEXTVAL para generar el siguiente id.
  17.   --orders_seq.NEXTVAL=101
  18.  
  19.   INSERT INTO orders (id, description)
  20.   VALUES (orders_seq.NEXTVAL, 'Dummy order description.');
  21.  
  22.   -- Usar CURRVAL para traer el valor actual de la secuencia de la tabla Principal y usarlo en el detalle.
  23.   --orders_seq.CURRVAL=101
  24.  
  25.   --order_lines_seq.NEXTVAL=201
  26.  
  27.   INSERT INTO order_lines (id, order_id, description)
  28.   VALUES (order_lines_seq.NEXTVAL, orders_seq.CURRVAL, 'Dummy order line description');
  29.  
  30.   COMMIT;
  31. END;
  32. /
  33.  
  34. SQL> SELECT * FROM orders ORDER BY id;
  35.  
  36.         ID DESCRIPTION
  37. ---------- --------------------------------------------------
  38.          101 Dummy ORDER description.        
  39.  
  40. 2 ROWS selected.
  41.  
  42. SQL> SELECT * FROM order_lines ORDER BY id;
  43.  
  44.         ID   ORDER_ID DESCRIPTION
  45. ---------- ---------- --------------------------------------------------
  46.        201       101 Dummy ORDER line description
  47.      
  48.  
  49. 2 ROWS selected.
  50.  
  51. SQL>

Última edición por gnzsoloyo; 22/11/2013 a las 16:44