Otra manera de clave unica

NTOM(VAL(STRTRAN(SYS(2007,SYS(0))+STR(VAL(SYS(1))- 
2450000,5,0)+STR(SECONDS(),9,4)," ","0")))

(creo que ya la habia pasado), se guarda en un campo de tipo monetario, la 
clave ordena por origen (donde quien y luego cuando, si es importante ordenar 
por fecha, se pasa el strtran al final de la expresion que esta dentro del val.

En una discusión previa, pasaron los links a unos sitios donde explicaban 
varios algorimos al efecto.

--- El sáb 28-nov-09, Martín Glanz <[email protected]> escribió:

De: Martín Glanz <[email protected]>
Asunto: [GUFA] Campo Autoincremental
Para: "GUFA List Member" <[email protected]>
Fecha: sábado, 28 de noviembre de 2009, 3:09 am




 


 







Estimados: 

Tengo algo armado con claves generadas a partir de 
right(sys(2015),9)+_screen.ipEnd 

El sys(2015) garantiza claves únicas en una misma PC (tengo
tablas con más de 25 millones de registros que lo verifican). Descarto el
primer carácter ya que es constante. 

La propiedad ipEnd corresponde al último grupo de la IP de cada
PC o en algunos identifica procesos (mediante hardcode) 

De esa clave se desprende el Dónde (siempre y cuando haya IPs
fijas o registro de DHCP) y Cuando ya que el sys(2015) es reversible obteniendo
DateTime (con milisegundos si no me equivoco) del instante de generación. El
quien surge del registro que llevo de acuerdo a
Usuario/PC/Dominio/UsuarioSistema/Login/Logout. 

Saludos, 

   

Martín 

   



De: [email protected]
[mailto:[email protected]] En nombre de Carlos Miguel FARIAS

Enviado el: Viernes, 27 de Noviembre de 2009 18:25

Para: GUFA List Member

Asunto: [GUFA] Campo Autoincremental 



   


 
  
  Estimados:

  Si lo que se necesita es una clave unica, para identificar el registro (o los
  registros) en forma univoca, lo que se puede hacer, es armar una clave, que
  contenga el instante de creacion mas algo calculado del nombre de la maquina
  y del usuario.

  Eso ya lo discutimos unos meses atras y hay muchos metodos posibles.

  La ventaja es que no tendrías la lentitud (30% mas lento) que indica al menos
  la teoria acerca de manejar un indice autoincremental.

  Con un indice como el que sugiero, ademas de orden de carga, te quedan tres
  pistas de auditora, cuando, donde y quien.

  Saludos: Miguel

  

  --- El jue 26-nov-09, Norberto Mario Alvarez <[email protected]>
  escribió: 
  

  De: Norberto Mario Alvarez <[email protected]>

  Asunto: [GUFA] Campo Autoincremental

  Para: "GUFA List Member" <[email protected]>

  Fecha: jueves, 26 de noviembre de 2009, 10:59 am 
  
  
  Ok,
  muchas gracias, voy a cambiar la lógica!!!. Voy a tomar de un select  el
  valor máximo en el momento de guardar. Desde ya muchas gracias. 
    
  Norberto
  Alvarez 
    
    
  
  
  De: [email protected]
  [mailto:[email protected]] En nombre de Rafael Copquin

  Enviado el: jueves, 26 de noviembre de 2009 09:17 a.m.

  Para: GUFA List Member

  Asunto: [GUFA] Campo Autoincremental 
  
  
    
  
  Esa es una de las
  razones por las cuales los campos autoincrementales se deberían utilizar
  solamente como claves primarias surrogadas. Si por ejemplo las usamos para
  generar números de facturas (que deberían coincidir con el número del
  formulario preimpreso), en caso de error o de que, como dice Antonio, alguien
  grabe antes que vos, se te puede armar una galleta infernal. 
  
  
    
  
  
  Deberías
  considerarlas equivalentes a un número de registro. Pero a diferencia de
  recno(), que te da el número de registro y permanece constante a menos que
  borres algunos registros y le hagas un pack a la tabla, dicho número es
  absolutamente independiente del número de registro. En otras palabras, si
  tenés una tablita con 10 registros y borrás el último, por ejemplo, le hacés
  un pack y después agregás otro registro, dicho nuevo registro va a tener el
  número 10 de recno(), pero en el caso de la clave autoincremental va a tener
  el 11. Si vos hubieras basado tu lógica en el recno() tendrías un resultado
  que no es el correcto. En cambio, con el número autoincremental podés borrar
  todos los registros que quieras, pero el registro siempre conserva su
  identidad inalterable. Las relaciones entre tablas no se te modifican, en
  fin...... 
  
  
    
  
  
  Rafael Copquin 
  
  
    
  
  
    
  
  
  
  ----- Original
  Message -----  
  
  
  From: Antonio M. Castaño
   
  
  
  To: GUFA List Member  
  
  
  Sent: Wednesday,
  November 25, 2009 8:27 PM 
  
  
  Subject: [GUFA] Campo
  Autoincremental 
  
  
    
  
  
  Hola
  Norberto: 
  
  
    
  
  
  Es
  así. Es lo que hacen todos los motores de base de datos. Cuando vos hacés el
  append te "reserva" el número siguiente de el campo autoncremental.
  Hace eso, porque en ese mismo momento, alguien podría estar haciendo otro
  append. Si no tiene reservado una para vos, qué número le asignaría si el
  otro graba primero?. Lo que te garantiza el motor es que sean todos
  diferentes. NO que sean consecutivos. 
  
  
    
  
  
  Si
  necesitás un campos incremental, todos consecutivos, lo tenés que manejar de
  otra manera, con lógica programada por vos. 
  
  
    
  
  
  Saludos!
 





      Yahoo! Cocina

Encontra las mejores recetas con Yahoo! Cocina.


http://ar.mujer.yahoo.com/cocina/

Responder a