Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Problema campo auto-incrementable (http://www.forosdelweb.com/f21/problema-campo-auto-incrementable-326460/)

juanito1984 19/08/2005 05:08

Problema campo auto-incrementable
 
tengo un problema trabajando con Oracle9i: no me acepta los campos autoincrementables!!!!
Esta tabla (por muy sencilla que es) no me la acepta porq tiene un campo autoincrementable:

create table curso (
codigo varchar2(4) auto_increment);

Siempre me da el siguiente error:
create table curso (
*
ERROR en línea 1:
ORA-00922: falta la opción o no es válida


¿A alguien le ha ocurrido lo mismo alguna vez?¿Alguien sabe la solucion?Gracias

macedo 19/08/2005 07:08

Hola juanito1984.

Creo que el problema es que estás intentando hacer autoincremetal con un varchar y el autoincremental es integer.

De todos modos creo que oracle no soporta el autoincremental como tal (no estoy muy seguro pero yo no lo he visto).

Tienes que crear una secuencia. Algo más o menos así:

create sequence Auto_Incr
start with 1
increment by 1
nomaxvalue;

Y despues en el insert pones algo así:

insert into curso values(Auto_Incr.nextval, valor1, ... , valor2 );

Espero que te sirva de algo.

Saludos.

juanito1984 19/08/2005 09:46

OK, es tal cual como lo pones, muchas gracias!!!!

juanito1984 22/08/2005 13:13

Hay un problema con la secuencia:
cada vez que te desconectas de la BD y vuelves a conectarte la secuencia aumenta y deja espacios en blanco. Es decir si va por el 3, al desconectarte y volverte a conectar empieza por el 21,22,23, y te desconectas y vuelves a conectarte empieza por el 41,42,43,...
Entonces deja muchos numeros sin utilizar. ¿Alguien sabe solucionarlo?
Gracias

laureano59 22/08/2005 15:30

CASI NUNCA UTILIZO LOS AUTOINCREMENTABLES DE LOS MOTORES DE BASES DE DATOS.
LO QUE HAGO ES HACER UNA CONSULTA SELECCIONANDO EL MAXIMO VALOR +1 DEL CAMPO QUE QUIERO INCREMENTAR Y ESTO LO MANDO A UNA VARIABLE QUE ES LA QUE LUEWGO INSERTO EN EL INSERT DE MI CONSULTA.

ALGO ASÍ:

SELECT MAX(id_factura + 1) As autonumerico FROM facturacion

entonces autonumerico me guardo el consecutivo que sigue.

ESTO ME PERMITE MANEJAR MEJOR LOS CONSECUTIVOS YA QUE YO DESIDO DE MANERA PRACTICA EN QUE NUMERO LOS INICIO.


La zona horaria es GMT -6. Ahora son las 19:57.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.