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.