Oracle campo auto-incremental

Desgraciadamente Oracle no tiene un campo auto-incremental al estilo de MySql ( id number auto-increment primary key). Lo debemos construir nosotros.

Con la ayuda de los triggers y las secuencias que nos proporciona Oracle podemos programar un trigger que nos proporcione este campo auto-incremental.

Antes de nada crearemos una tabla de pruebas:

SQL> CREATE TABLE mi_tabla_de_pruebas
(mi_id NUMBER PRIMARY KEY,
mi_nombre VARCHAR2(30));

Primero creamos la secuencia:

SQL> CREATE SEQUENCE mi_secuencia
START WITH 1
INCREMENT BY 1;

ahora el trigger ( pl/sql):

CREATE OR REPLACE TRIGGER mi_disparador
BEFORE INSERT
ON mi_tabla_de_pruebas
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT mi_secuencia.nextval INTO :NEW.ID FROM dual;
END;
/

y listo, ya puedes probar:

SQL> INSERT INTO mi_tabla_de_pruebas (mi_nombre) VALUES ('Dámaso');

1 row created.

SQL> INSERT INTO mi_tabla_de_pruebas  (NULL, ’Teofrasio’);

1 row created.
 
ora/autoincrement.txt · Última modificación: 2008/11/30 11:42 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki