vale, ya entiendo tu problema.
en ciertas versiones puedes crear sentencias de "insert" y "update" en las cuales puedes repetir el nombre de la tabla en la que vas a insertar o acualizar datos, pero en otras versiones anteriores no.
si estas usando PHP + MySQL, el problema del que me hablas lo solucione asi:
Código:
PHP:
function getNewKey($key_name, $table_name) {
global $CONN;
$sql = "
select max(".$key_name.")
from `".$table_name."`";
$result = mysql_query($sql, $CONN);
$row = mysql_fetch_row($result);
$new_key = $row[0] + 1;
return $new_key;
}
la funcion anterior te devolvera el siguiente "id" de cualquier tabla:
Código:
echo getNewKey("idUsuario", "usuarios");
si quieres insertar un nuevo registro, puedes hacer:
Código:
define("MYSQL_DUPLICATE_ENTRY_ERROR", "1062"); // registro duplicado
$nombre = "Diego Armando Maradona";
for ($i = 0; $i < 100; $i ++) {
$idUsuario = getNewKey("idUsuario", "usuarios");
$sql = "
insert into usuarios(idUsuario, nombre)
values(".$idUsuario.", '".$nombre."')";
mysql_query($sql, $CONN);
$errno = mysql_errno($CONN);
if (($errno > 0) && ($errno != MYSQL_DUPLICATE_ENTRY_ERROR))
break;
}
el numero de intentos en el "for" anterior se debe a que justo en el momento en que obtienes el nuevo "id", podria darse el caso que algun otro usuario se adelantase, robandote de esta forma el "id" y fracasando la insercion. por eso se intenta al menos 100 veces. y si despues de cien intentos no lo has conseguido... mala suerte.
seguro que hay otras formas de hacerlo. si a alguien se lo ocurre alguna otra, tambien me vendria bien saberlo.