Buscar en este blog

martes, 27 de noviembre de 2007

ORACLE. autoincrement.

Muchos son los casos en los que tenemos que hacer un insert y el campo id no puede repetirse. En MySQL tenemos el autoincrement pero en oracle necesitamos saber el máximo del campo id de la tabla y añadirle uno.

Por suerte podemos incluir sentencias select dentro de un insert.

Veamos el ejemplo:

CREATE TABLE CLIENTES
(
ID_CLIENTE NUMBER(11) NOT NULL,
NOMBRE VARCHAR(240 Byte),
constraint PK_ID_CLIENTE primary key (ID_CLIENTE)
);

/* inicializamos la tabla */
INSERT INTO CLIENTES
( ID_CLIENTE, NOMBRE )
VALUES
( 1 ,'CLIENTE 1')

/* el resto de los insert con la select dentro del insert */
INSERT INTO CLIENTES
( ID_CLIENTE, NOMBRE )
VALUES
( (SELECT MAX(ID_CLIENTE)+1 FROM CLIENTES) ,'CLIENTE DE PRUEBA')

---

Supongo que habrá otras técnicas de simular el autoincrement de MySQL.
Esta forma funciona pero seguro que hay otras muchas más.

3 comentarios:

Martín Andres dijo...

Hola
para el incremento en ORACLE se utiliza el objeto SEQUENCE, hasta se tiene cacheado en memoria.
El ejemplo que das, es interesante, pero desde el punto de vista del rendimiento es bajísimo, hay que revisar toda la tabla para insertar un nuevo elemento.
En tablas chicas la cosa funciona, pero en tablas normales, el rendimiento se cae mal.

Martín Andres dijo...

Buena suerte

Martín Andres dijo...

Buena suerte