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.

Comentarios

  1. 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.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

PHP. módulo de un "long". Calcular dígito control de IBAN.

HTML div organizar contenido