Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Escribir en dos tablas la misma id

Estas en el tema de Escribir en dos tablas la misma id en el foro de Bases de Datos General en Foros del Web. Hola. Lo que quiero hacer es muy sencillo, y no lo necesito para "hoy", sino más bien "para pasado mañana" jeje. Con lo sencillo que ...
  #1 (permalink)  
Antiguo 13/03/2005, 20:57
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Escribir en dos tablas la misma id

Hola. Lo que quiero hacer es muy sencillo, y no lo necesito para "hoy", sino más bien "para pasado mañana" jeje. Con lo sencillo que es no creo que tengáis dificultades en contestarme.

Simplemente, es que quiero insertar un dato en una tabla, y el id que le asignen en esa tabla (por el autonumérico), insertarlo en otra (donde lo relacionaré con otro dato). Por tanto, eso, qué me recomendáis:

Que lo meta, busque el último elemento en la tabla metido, vea cuál es su id, y lo meta en la otra? ¿O hay algún método más "directo", que me evite hacer un insert y luego un select, para luego volver a hacer otro insert (pero en la otra tabla)? Vamos, orientación al respecto.

Saludos

Última edición por un_tio; 13/03/2005 a las 20:58
  #2 (permalink)  
Antiguo 13/03/2005, 21:48
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 4 meses
Puntos: 13
luego de hacer el primer "insert" puedes recuperar el id ingresado con mysql_insert_id();

$insert1 = mysql_query("insert blablabla");
$ultimo_id = mysql_insert();
$insert2 = mysql_query("insert bla bla bla);
__________________
El conocimiento es libre: Movimiento por la Devolución
  #3 (permalink)  
Antiguo 14/03/2005, 01:46
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Sólo una pequeñita corrección a frijolerou, la función que tiene que llamar para conocer el último autonumérico usado es mysql_insert_id(). Seguro que él lo sabe, pero para los demás es importante que quede bien puesta.
Otra forma de obtener lo mismo:
Código:
select last_inser_id()
con lo que lo que pide un_tio se podría hacer así:
Código PHP:
mysql_query("insert into tabla ... ");
mysql_query("insert into tabla2 (id ...) values (mysql_insert_id(), ...)"); 
Un saludo.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #4 (permalink)  
Antiguo 14/03/2005, 18:58
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Se me olvidó decir que estoy con SQL Server 2000, no con MySQL. Si alguien tiene la respuesta para este caso...

Una forma de hacerlo que también me vendría bien, es con un select, pero que me saque sólo el id máximo (en lugar de hacer un select, ordenarlo por id, y luego del recordset sacar el último valor, que el select directamente me devolviera sólo el máximo de los id. Esto es fácil creo, con top creo que se haría...).

Saludos
  #5 (permalink)  
Antiguo 14/03/2005, 18:59
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Buscando por ahí he encontrado esto:

@@IDENTITY: Devuelve el último valor de identidad insertado.
  #6 (permalink)  
Antiguo 14/03/2005, 19:11
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Jeje chicos, ya lo he solucionado. Aquí pongo las dos soluciones para quien le interese:

select @@IDENTITY

select top 1 campo1 from prueba2 order by campo1 desc
  #7 (permalink)  
Antiguo 27/03/2005, 09:39
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
¿Alguien me puede decir cuál de esas dos soluciones que he puesto es mejor, justificándolo? (la de si usar un select "típico", con "top", etc., o una orden "directa" del sistema como es la de @@IDENTITY).
  #8 (permalink)  
Antiguo 28/03/2005, 03:38
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2


Tú sabrás lo que quieres decir sobre lo que puse.
__________________
Estoy contagiado de Generación-I
  #9 (permalink)  
Antiguo 28/03/2005, 08:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
¿Que yo sabré lo que quiero decir sobre lo que pusiste? ¿Cómo? ¿por qué? No te entiendo. Tú sabrás lo que querrías decir sobre lo que pusiste, no yo, pero es que yo ahora de todos modos no me había referido a tu mensaje (que está orientado a MySQL y yo estoy hablando de SQL Server). Me parece que me has entendido mal.
  #10 (permalink)  
Antiguo 28/03/2005, 09:07
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
No un_tio, entre medias de mi último mensaje y el previo tuyo había otro mensaje que ha sido borrado escrito por alguien en mensaje criptográfico.
Ya sé que lo tuyo va por SQL server y lo que yo he puesto es para MySQL.
Un saludo.
__________________
Estoy contagiado de Generación-I
  #11 (permalink)  
Antiguo 28/03/2005, 09:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 3 meses
Puntos: 6
Jajaja, ¿en serio? "mensaje criptográfico", vaya...

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:28.