6 de julio de 2007

VFP 9 a MySQL5

Voy a Intentar en las próximas semanas escribir una serie de artículos sobre la utilización de VFP atacando bases de datos MySQL. Estos artículos reflejan en cierta manera la experiencia de mi trabajo diario con MySQL.

Función UUID()

El propósito de esta función es devolver un identificador único universal. Un UUID es un número de 128 bits representado por una cadena de cinco números hexadecimales en el formato:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee. 
Un UUID está diseñado para ser un único número globalmente en el espacio y el tiempo.

Es de suponer pués que dos llamadas a UUID() generen dos valores diferentes, aunque esas llamadas se realizen en dos ordenadores separados físicamente y que no están conectados en red.

La utilidad de esta función está mas que clara. Nos permite obtener un identificador único por cada registro de una tabla, podemos utilizar esta cadena como clave primaria de la tabla, esto nos permitiria que en el caso de replicación de la base de datos, registros de la misma tabla pero en diferentes bases de datos no se sobreescribieran entre si. Cosa que si prodría pasar si utilizáramos como clave primaria campos autoincrementales.

Ya que al estar en bases de datos diferentes podría darse el caso de tener registros duplicados con el mismo identificador.

Vamos ha aplicar esta función con nuestro querido FOX:
********************************************
* Ejemplo de uso función UUID 
********************************************

LOCAL CSQL, NH, CCADENA
CSQL = ""
NH = 0
CCADENA = ""
CSQL = "DRIVER={MySQL ODBC 3.51 Driver};" + ;
  "SERVER=127.0.0.1;" + ;
  "PORT=3306;" + ;
  "UID=usuario;" + ;
  "PWD=pasword;" + ;
  "DATABASE=mybasededatos;" + ;
  "OPTIONS=2049;"

NH = SQLSTRINGCONNECT("" + CSQL, .T.)
IF NH > 0
  SQLSETPROP(NH,'Asynchronous', .F.)
  SQLSETPROP(NH,'BatchMode', .T.)
  CCADENA = PADR("",32,'0')
  SQLPREPARE(NH, "SELECT UUID()","CURSOR")
  SQLEXEC(NH)
  SELECT CURSOR
  IF RECCOUNT()>0
    CCADENA = LEFT(FIELD(1),08)+ ; 
      SUBSTR(FIELD(1),10,04)+ ;
      SUBSTR(FIELD(1),15,04)+ ;
      SUBSTR(FIELD(1),20,04)+ ;
      RIGHT(FIELD(1),12)
  ENDIF

  WAIT WINDOW CCADENA && Muestra la Cadena
  SELECT CURSOR
  USE
ENDIF
*************************************************************
Antonio L. Montagut
www.ontarioxb.es

No hay comentarios. :

Publicar un comentario