Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Autoincremento en SQLite
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Autoincremento en SQLite

Publicar nuevo tema Responder al tema
Foros de discusión » Varios (seguridad, internet, ofimática, errores)   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Autoincremento en SQLite Responder citando

¿Cómo puedo poner un campo autoincremento en una base de datos SQLite? estoy desarrollando una aplicación para Android con acceso a bases de datos SQLite, he usado como base vuestro artículo:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=537

Y necesito crear un campo clave primeria en una tabla que se vaya incrementando automáticamente pero no veo ningún tipo de datos para ello en SQLite.
MensajePublicado:
Lun Ene 21, 2013 7:02 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Autoincremento en SQLite Responder citando

varios escribió:
¿Cómo puedo poner un campo autoincremento en una base de datos SQLite? estoy desarrollando una aplicación para Android con acceso a bases de datos SQLite, he usado como base vuestro artículo:

http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=537

Y necesito crear un campo clave primeria en una tabla que se vaya incrementando automáticamente pero no veo ningún tipo de datos para ello en SQLite.


En SQLite no es necesario que definas un campo como autoincremento, es suficiente con que crees la tabla de la siguiente forma:

Código:

create table factura (
  codigo int primary key,
  fecha date,
  codigocliente int,
  importe money
);


En el ejemplo anterior el campo autoincremento será "codigo", al ser de tipo "int" y "primary key". Para realizar el insert sería:

Código:

insert into factura values
(
  null,
  current_date,
  1,
  1000
);


Como ves en el campo "codigo" establecemos el valor "null" para que sea el propio SQLite quien establezca el valor que le corresponde al autoincremento. Para el campo "fecha" hemos usado la función "current_date" de SQLite que devuelve la fecha actual del equipo.

Si no usas "null" también puedes asignar el valor "rowid", como indica SQLite en su documentación If no ROWID is specified on the insert, or if the specified ROWID has a value of NULL, then an appropriate ROWID is created automatically.[/i]


Ultima edición por alonsojpd el Dom Jun 02, 2013 6:59 pm, editado 1 vez
MensajePublicado:
Lun Ene 21, 2013 7:10 pm
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: [RESUELTO] Autoincremento en SQLite Responder citando

alonsojpd escribió:
En SQLite no es necesario que definas un campo como autoincremento, es suficiente con que crees la tabla de la siguiente forma:

Código:

create table factura (
  codigo int primary key,
  fecha date,
  codigocliente int,
  importe money
);


En el ejemplo anterior el campo autoincremento será "codigo", al ser de tipo "int" y "primary key". Para realizar el insert sería:

Código:

insert into factura values
(
  null,
  current_date,
  1,
  1000
);


Como ves en el campo "codigo" establecemos el valor "null" para que sea el propio SQLite quien establezca el valor que le corresponde al autoincremento. Para el campo "fecha" hemos usado la función "current_date" de SQLite que devuelve la fecha actual del equipo.


Estupendo, tal y como me has indicado, me funciona de perfectamente.
MensajePublicado:
Lun Ene 21, 2013 7:12 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: [RESUELTO] Autoincremento en SQLite3 Responder citando

Os indicamos que para la versión 3 de SQLite disper de la cláusula "autoincrement" al igual que otros motores de base de datos. Por tanto, para crear un campo autoincremento en SQLite3 sería algo así:

Código:

create table factura (
  codigo int primary key autoincrement,
  fecha date,
  codigocliente int,
  importe money
);


En realidad, lo que hace SQLite al introducir "autoincrement" es crear automáticamente la tabla "sqlite_sequence" (si no existía previamente, la crea al crear el primer autoincrement o secuencia) y añade un registro con el nombre de la tabla y el valor del autoincremento. Posteriormente cuando se añada un registro en la tabla con autoincremento hará un update sobre dicha tabla sqlite_sequence e incrementará el valor del registro correspondiente a la tabla.

Como vemos y por filosofía de SQLite todo muy transparente y sencillo. Con un simple:

Código:

select * from sqlite_sequence;


podremos consultar todas las secuencias que tengamos en nuestra base de datos SQLite y por lo tanto, si queremos modificar el valor de alguna de las secuencias (sean autoincrementos de tablas o lo que sea) podremos realizar un:

Código:

update sqlite_sequence
set seq=0
where name='nombre_tabla'


Con el código anterior resetearemos un campo autoincremento (o lo que sea) para la tabla "nombre_tabla".
MensajePublicado:
Mie Abr 30, 2014 8:11 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Varios (seguridad, internet, ofimática, errores)  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A