cómo puedo crear índices autoincrementados?
Hola.
Tengo una duda, y esperaba que alguien me la puediera solucionar.
Estoy en plena construcción de una base de datos en ORACLE, y necesito que una de las columnas de una tabla sea "primary key" y autoincrementada, cuando haga un "insert". Cuál es la orden que lo hace y si tiene que ser de un tipo de datos concreto?
Gracias de antemano
NoEsDificil
Tengo una duda, y esperaba que alguien me la puediera solucionar.
Estoy en plena construcción de una base de datos en ORACLE, y necesito que una de las columnas de una tabla sea "primary key" y autoincrementada, cuando haga un "insert". Cuál es la orden que lo hace y si tiene que ser de un tipo de datos concreto?
Gracias de antemano
NoEsDificil
Creo que eso por si solo no es posible, una solucion es realizar una llamada a una secuencia oracle (sequence.nextval o algo asi)
Efectivamente tienes que crear una secuencia. La sintaxis es algo asi:
CREATE SEQUENCE SEQ_CLIENTES
INCREMENT BY 1
START WITH int
MAXVALUE int | NOMAXVALUE
MINVALUE int | NOMINVALUE
CYCLE | NOCYCLE
CACHE int | NOCACHE
ORDER | NOORDER
Experimenta un poco con ello.
El siguiente paso seria crear un trigger que cogiera el proximo valor de la secuencia antes de una insercion y lo acoplara como ID. 3 sentencias utiles son:
-- Te devuelve el siguiente valor de la secuencia
SELECT SEQ_ID_CLIENTES.NEXTVAL FROM DUAL
-- Te devuelve el valor actual de la secuencia
SELECT SEQ_ID_CLIENTES.CURRVAL FROM DUAL
-- Te devuelve el anterior valor de la secuencia
SELECT SEQ_ID_CLIENTES.LASTVAL FROM DUAL
No recuerdo si esta ultima era exactamente asi o nisiquiera existe, estoy medio dormido xD
Salu2...
CREATE SEQUENCE SEQ_CLIENTES
INCREMENT BY 1
START WITH int
MAXVALUE int | NOMAXVALUE
MINVALUE int | NOMINVALUE
CYCLE | NOCYCLE
CACHE int | NOCACHE
ORDER | NOORDER
Experimenta un poco con ello.
El siguiente paso seria crear un trigger que cogiera el proximo valor de la secuencia antes de una insercion y lo acoplara como ID. 3 sentencias utiles son:
-- Te devuelve el siguiente valor de la secuencia
SELECT SEQ_ID_CLIENTES.NEXTVAL FROM DUAL
-- Te devuelve el valor actual de la secuencia
SELECT SEQ_ID_CLIENTES.CURRVAL FROM DUAL
-- Te devuelve el anterior valor de la secuencia
SELECT SEQ_ID_CLIENTES.LASTVAL FROM DUAL
No recuerdo si esta ultima era exactamente asi o nisiquiera existe, estoy medio dormido xD
Salu2...
