Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Qué clave primaria autoincremento utilizar en Oracle
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Qué clave primaria autoincremento utilizar en Oracle

Publicar nuevo tema Responder al tema
Foros de discusión » Oracle Database, motor de base de datos profesional   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Qué clave primaria autoincremento utilizar en Oracle Responder citando

Estoy desarrollando una aplicación con muchas tablas (unas 100), para varios clientes y que contendrán miles, quizá millones, de registros. Me gustaría saber cual es la forma más eficiente de generar las claves primarias de las tablas utilizando autoincremento. Ya sé que Oracle no tiene este tipo de datos pero sí tiene las secuencias para simularlo. Con lo cual quisiera utilizar estas secuencias para generar el número autoincremento que se corresponderá con la clave primaria de cada tabla.

Me interesaría poder tener en una misma base de datos los registros de varios clientes, si se diera el caso, sin que haya problemas de claves duplicadas.
MensajePublicado:
Lun Mar 12, 2007 7:56 am
Top of PageVer perfil de usuario
varios
Magnífico usuario


Registrado: Oct 10, 2006
Mensajes: 2092

Asunto: Utilizo Delphi como lenguaje de programación Responder citando

Se me olvidaba comentar que utilizo Delphi para el desarrollo de la aplicación.
MensajePublicado:
Lun Mar 12, 2007 7:59 am
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Utilizo Delphi como lenguaje de programación Responder citando



Anuncios



Existen muchísimas posibilidades para abordar lo que nos comentas, a continuación te indicamos una de ellas, no es la mejor, ni la peor, es nuestra visión. Puesto que nos comentas que tienes varios clientes y que, además, quieres poder tener la posibilidad de importar todos los registros de todos los clientes en la misma base de datos, esto es lo que te proponemos:

La estructura del registro que será clave primaria de todas las tablas podría ser:

* 5 números que serán fijos por cada tabla (indican el código de la tabla, para utilizar la misma secuencia para todas las tablas).
* 12 números variables para identificar el número único de registro de la tabla
* 5 números fijos para identificar el código de cliente).




Para generar la clave primaria de cada tabla podrías utilizar la siguiente función Delphi:

Código:

function TformMenuPrincipal.obtenerClavePrimaria (tabla : string; cliente : string) : string;
var
  idNum : string;
  i : integer;
begin
  Result := '';
 
  bdOracle.Open;
  tc.Close;
  //comprobamos si hay registros en la tabla de carga
  tc.SQL.Clear;
  tc.SQL.Add('SELECT SECUENCIA_TABLAS.NEXTVAL valor FROM DUAL');
  tc.Open;

  //para dejar los 12 caracteres fijos (añadir ceros por la izquierda si es necesario)
  idNum := tc.fieldbyname('valor').AsString;
  for i := 0 to 11 - Length (idNum) do
    idNum := '0' + idNum;
   
  Result := tabla + idNum + cliente;
end;





Nota: la consulta SQL para la creación de la secuencia Oracle:

Código:

CREATE SEQUENCE SECUENCIA_TABLAS
INCREMENT BY 1
MensajePublicado:
Jue Mar 29, 2007 11:39 am
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 » Oracle Database, motor de base de datos profesional  

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