INSERT sobre Tabla con PK autonumerica

03/02/2005 - 00:44 por Pablo Iñigo Blasco | Informe spam
Saludos,
Tengo un problema, tengo que insertar en una tabla un nuevo registro, la
primary key de esa tabla es autonumerico, por lo tanto no la especifico al
hacer el insert.

Justo despues tengo que hacer un insert sobre otra tabla, uno de los campos
del nuevo registro debe contener el valor de la PK del registro que acabo de
insertar en la primera tabla(es decir el campo es una FK).
Pero el problema es que no tengo ni idea de como conseguir el valor de ese
campo autonumerico justo despues de hacer el insert. ¿alguien sabe como
solucionarlo? Estoy en access asi que no puedo usar ni stored procedures ni
functions ... :-(




conexion.execute("INSERT INTO tabla1(campo2,campo3...)
VALUES('campo2','campo3',...)"); //el campo 1 es autonumerico
conexion.execute("INSERT INTO tabla2(campo2,campo3...) VALUES ('???????',
'campo3',...)); //¿como referencio al registro insertado con anterioridad?

// asi son las tablas:
tabla1(
ID Autonumerico PRIMARY KEY,
campo1 INTEGER,
...);

tabla2(
ID Autounmerico PRIMARYKEY,
campo2 INTEGER REFERENCES
tabla1(id),
campo3 INTEGER,
);

Preguntas similare

Leer las respuestas

#1 Valdov
03/02/2005 - 03:49 | Informe spam
Puedes hacer un select, pensando en que alguno de los otros campos pueda ser
unico tambien, o bien condicionando el query por todos los valores que
acabas de insertar, si llegara a haber dos registros iguales con excepcion
del autonumerico, creo que tendrías un problema con el diseño de tu base de
datos.

Pero sino despues de hacer el primer insert puedes hacer:

Select Campo1 from tabla1 Where campo2='elvalor' And campo3='elotrovalor'

Valdov


"Pablo Iñigo Blasco" wrote in message
news:OG$
Saludos,
Tengo un problema, tengo que insertar en una tabla un nuevo registro, la
primary key de esa tabla es autonumerico, por lo tanto no la especifico al
hacer el insert.

Justo despues tengo que hacer un insert sobre otra tabla, uno de los


campos
del nuevo registro debe contener el valor de la PK del registro que acabo


de
insertar en la primera tabla(es decir el campo es una FK).
Pero el problema es que no tengo ni idea de como conseguir el valor de ese
campo autonumerico justo despues de hacer el insert. ¿alguien sabe como
solucionarlo? Estoy en access asi que no puedo usar ni stored procedures


ni
functions ... :-(




conexion.execute("INSERT INTO tabla1(campo2,campo3...)
VALUES('campo2','campo3',...)"); //el campo 1 es autonumerico
conexion.execute("INSERT INTO tabla2(campo2,campo3...) VALUES ('???????',
'campo3',...)); //¿como referencio al registro insertado con anterioridad?

// asi son las tablas:
tabla1(
ID Autonumerico PRIMARY KEY,
campo1 INTEGER,
...);

tabla2(
ID Autounmerico PRIMARYKEY,
campo2 INTEGER REFERENCES
tabla1(id),
campo3 INTEGER,
);


Respuesta Responder a este mensaje
#2 Israel
03/02/2005 - 13:17 | Informe spam
Y si haces

SELECT Max (campo1) FROM Tabla1

De este modo tendrias el ultimo valor añadido.

Un saludo.


"Pablo Iñigo Blasco" escribió en el mensaje
news:OG$
Saludos,
Tengo un problema, tengo que insertar en una tabla un nuevo registro, la
primary key de esa tabla es autonumerico, por lo tanto no la especifico al
hacer el insert.

Justo despues tengo que hacer un insert sobre otra tabla, uno de los


campos
del nuevo registro debe contener el valor de la PK del registro que acabo


de
insertar en la primera tabla(es decir el campo es una FK).
Pero el problema es que no tengo ni idea de como conseguir el valor de ese
campo autonumerico justo despues de hacer el insert. ¿alguien sabe como
solucionarlo? Estoy en access asi que no puedo usar ni stored procedures


ni
functions ... :-(




conexion.execute("INSERT INTO tabla1(campo2,campo3...)
VALUES('campo2','campo3',...)"); //el campo 1 es autonumerico
conexion.execute("INSERT INTO tabla2(campo2,campo3...) VALUES ('???????',
'campo3',...)); //¿como referencio al registro insertado con anterioridad?

// asi son las tablas:
tabla1(
ID Autonumerico PRIMARY KEY,
campo1 INTEGER,
...);

tabla2(
ID Autounmerico PRIMARYKEY,
campo2 INTEGER REFERENCES
tabla1(id),
campo3 INTEGER,
);


Respuesta Responder a este mensaje
#3 urko
03/02/2005 - 16:03 | Informe spam
una solucion es generar una cadena aleatoria e insertarla en vez de alguno
de los campos
esto es insert into tabla(nombre,..) values(cadenaleatoria,..)

luego seleccionarla
select from tabla where nombre=cadenaaleatoria
obtienes el id
id=rs("idusuario")
y luego haces un update del valor real
es una manera de asegurarte el id autonumerico
ya que haciendo SELECT Max (campo1) FROM Tabla1 por ejemplo
puedes tener el problema que otro usuario haya echo un insert desde otro
ordenador entonces no obtendrias el id correcto.
hay otra manera que tambien te devuelve el ultimo registro insertado pero
ocurre el mismo problema anterior.
saludos
urko


"Pablo Iñigo Blasco" escribió en el mensaje
news:OG$
Saludos,
Tengo un problema, tengo que insertar en una tabla un nuevo registro, la
primary key de esa tabla es autonumerico, por lo tanto no la especifico al
hacer el insert.

Justo despues tengo que hacer un insert sobre otra tabla, uno de los
campos del nuevo registro debe contener el valor de la PK del registro que
acabo de insertar en la primera tabla(es decir el campo es una FK).
Pero el problema es que no tengo ni idea de como conseguir el valor de ese
campo autonumerico justo despues de hacer el insert. ¿alguien sabe como
solucionarlo? Estoy en access asi que no puedo usar ni stored procedures
ni functions ... :-(




conexion.execute("INSERT INTO tabla1(campo2,campo3...)
VALUES('campo2','campo3',...)"); //el campo 1 es autonumerico
conexion.execute("INSERT INTO tabla2(campo2,campo3...) VALUES ('???????',
'campo3',...)); //¿como referencio al registro insertado con anterioridad?

// asi son las tablas:
tabla1(
ID Autonumerico PRIMARY KEY,
campo1 INTEGER,
...);

tabla2(
ID Autounmerico PRIMARYKEY,
campo2 INTEGER REFERENCES
tabla1(id),
campo3 INTEGER,
);

Respuesta Responder a este mensaje
#4 urko
03/02/2005 - 18:45 | Informe spam
Que falta el * de la select
select * from tabla where nombre=cadenaaleatoria

"urko" escribió en el mensaje
news:
una solucion es generar una cadena aleatoria e insertarla en vez de alguno
de los campos
esto es insert into tabla(nombre,..) values(cadenaleatoria,..)

luego seleccionarla
select from tabla where nombre=cadenaaleatoria
obtienes el id
id=rs("idusuario")
y luego haces un update del valor real
es una manera de asegurarte el id autonumerico
ya que haciendo SELECT Max (campo1) FROM Tabla1 por ejemplo
puedes tener el problema que otro usuario haya echo un insert desde otro
ordenador entonces no obtendrias el id correcto.
hay otra manera que tambien te devuelve el ultimo registro insertado pero
ocurre el mismo problema anterior.
saludos
urko


"Pablo Iñigo Blasco" escribió en el mensaje
news:OG$
Saludos,
Tengo un problema, tengo que insertar en una tabla un nuevo registro, la
primary key de esa tabla es autonumerico, por lo tanto no la especifico
al hacer el insert.

Justo despues tengo que hacer un insert sobre otra tabla, uno de los
campos del nuevo registro debe contener el valor de la PK del registro
que acabo de insertar en la primera tabla(es decir el campo es una FK).
Pero el problema es que no tengo ni idea de como conseguir el valor de
ese campo autonumerico justo despues de hacer el insert. ¿alguien sabe
como solucionarlo? Estoy en access asi que no puedo usar ni stored
procedures ni functions ... :-(




conexion.execute("INSERT INTO tabla1(campo2,campo3...)
VALUES('campo2','campo3',...)"); //el campo 1 es autonumerico
conexion.execute("INSERT INTO tabla2(campo2,campo3...) VALUES ('???????',
'campo3',...)); //¿como referencio al registro insertado con
anterioridad?

// asi son las tablas:
tabla1(
ID Autonumerico PRIMARY KEY,
campo1 INTEGER,
...);

tabla2(
ID Autounmerico PRIMARYKEY,
campo2 INTEGER REFERENCES
tabla1(id),
campo3 INTEGER,
);





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida