Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Inserción de datos en tabla con campo auto_increment (https://www.clubdelphi.com/foros/showthread.php?t=75449)

cmfab 24-08-2011 16:12:15

Inserción de datos en tabla con campo auto_increment
 
Hola a todos, acudo una vez mas a su ayuda. sucede lo siguiente. tnego dos tablas de una base de datos MySQL que tienen la misma estructura:

tabla_temporal y tabla (por poner un ejemplo).

He necesitado crear un campo de tipo integer auto_increment ( por ende establezco el campo como primary key en ambas tablas).

tabla_temporal está vacía, mientras que tabla contiene x cantidad de registros. al crear el campo los registros de tabla obtienen el id ( campo nuevo creado ) 1,2,3, ....

en un momento determinado de la aplicacion cargo un registro a tabla_temp que obtiene al incio el id 1. pero necesito hacer una insercion de este registro
en tabla. y he alli el problema, porque me salta un error de duplicado. la situacion radica en que son muchos los campos de las tablas. entonces estaba usando la siguiente instruccion SQL
Código SQL [-]
Insert into tablas select * from tablas_temp

mi pregunta es si existe alguna forma de que no incluya el nuevo campo
para que no se genere el error sin tener que escribir toda la lista de campos
de ambas tablas excluyendo el nuevo campo autonumerico. espero me habeis comprendido. gracias por sus atenciones

roman 24-08-2011 17:02:45

Mmm... que yo sepa, no. Siempre he pensado que el SQL debería tener una forma de listar las columnas indicando cuales queremos excluir.

Ahora, si esto que quieres es para hacerlo una sóla vez, pues ya habrías terminado de escribir los campos en lo que escribiste la pregunta :p

Otra forma es simplemente guardando la consulta en un archivo de texto y copiar y pegar cada vez que la quieras usar.

Otra manera, pero tampoco evitas escribir todas las columnas al menos una vez es creando una vista:

Código SQL [-]
create view vista_temp as
select 0, campo1, campo2, ...
from tabla_temp

y hacer la inserción desde la vista:

Código SQL [-]
insert into tabla select * from vista_temp

// Saludos

cmfab 24-08-2011 17:38:45

Gracias Roman por tus respuestas. si en realidad utilizo bastante esta consulta por eso les dire lo que hice. sencillamente cree una funcion
que me devuelve de una tabla todos los campos excepto el autoincremental

entonces hago la consulta así

Código SQL [-]
Insert into tabla (listacampos) select listacampos from tabla_temp

un gran saludo a todos


La franja horaria es GMT +2. Ahora son las 07:08:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi