Sentencia sql de actualización en Access

Tengo varias bases de datos que voy a unificar. Hasta ahora esas bases utilizaban como clave un campo de tipo texto, pero aprovechando esta unificación quería cambiar las relaciones entre tablas: utilizar como clave primaria en la tabla principal un autonumérico, unido a un numérico con duplicados en la tabla secundaria.
Ahora bien, cuando me fui a escribir la siguientes sentencia para conseguirlo:
UPDATE tabla2
SET tabla2.id= (SELECT tabla1.id FROM tabla1 WHERE tabla1.campo_texto=tabla2.campo_texto);
Me encontré con el siguiente mensaje de error de Access:
"La operación debe usar una consulta actualizable".
He probado esta sentencia tanto en Mysql como en PostgreSql, y funciona perfectamente. ¿Alguien sabe como sería la sintaxis en Access para que funcionará?
En cuanto a hacerlo con los otros servidores, como la base ha de estar en Access, he exportado las tablas a Mysql, he hecho la actualización sin problema y he vuelto a importar las tablas. Pero el problema es que al importar la tabla principal de vuelta a Access me encuentro con que el campo autonumérico, se convierte en numérico con lo cual se me fastidia el invento.

1 respuesta

Respuesta
1
El SQL en Access sería:
UPDATE tabla2 INNER JOIN tabla1 ON tabla2.campo_texto=tabla1.campo_texto
SET tabla2.id= tabla1.id;
Esto puede dar problemas si en la tabla1 se pueden repetir valores de "campo_texto".
Si ocurre eso tendrás que crear una consulta que asigne un valor único del "id" (el máximo o mínimo) para cada "campo_texto", y con ese resultado actualizar la tabla2.
La sentencia me ha funcionado perfectamente (la antigua clave usando un campo de texto no se repetía nunca).
Muchas gracias por la respuesta y la rapidez contestando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas