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!
