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

Relaciones

Estas en el tema de Relaciones en el foro de SQL Server en Foros del Web. Hola amigos! Si tengo dos tablas, ambas poseen campos enteros ID relacionados entre si. El campo(PK) ID de la primera tabla es autonumerico(propiedad identity "yes ...
  #1 (permalink)  
Antiguo 11/07/2006, 23:26
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
Relaciones

Hola amigos! Si tengo dos tablas, ambas poseen campos enteros ID relacionados entre si. El campo(PK) ID de la primera tabla es autonumerico(propiedad identity "yes not for replication"), pero el de la segunda(FK) no. Como puedo hacer para que el campo ID de la segunda tabla se llene con el valor generado de la primera tabla?

Gracias!

Última edición por jorge1980; 12/07/2006 a las 08:55
  #2 (permalink)  
Antiguo 12/07/2006, 15:13
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Necesitas insertar el registro de la tabla con el PK, después de eso recuperar cual ID se generó[1] y con ese dato hacer el segundo insert (tabla con el FK).

[1] Con SCOPE_IDENTITY() o @@Identity, aunque es más seguro usar el primero.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 13/07/2006, 20:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
Ok!..dejame probarlo y te cuento.

Gracias!
  #4 (permalink)  
Antiguo 13/07/2006, 21:58
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
Hola, probe lo que me indicastes, pero me arroja error en la sintaxis.
A continuacion te muestro el codigo:

CREATE PROCEDURE InsertarSolicitante(
@solicitante nvarchar(50), @ced nvarchar(50),
@cargo nvarchar(50), @telefono nvarchar(50),
@celular nvarchar(50), @fax nvarchar(50),
@email nvarchar(50), @IdSol int output
)
AS
DBCC CHECKIDENT(SOLICITANTE, RESEED,1)

INSERT INTO SOLICITANTE (NOMBRE, CED_ID, CARGO, TELEFONO, CELULAR, FAX, EMAIL)
VALUES (@solicitante, @ced, @cargo, @telefono, @celular, @fax, @email )

@IdSol=SCOPE_IDENTITY()
RETURN @IdSol
GO
  #5 (permalink)  
Antiguo 14/07/2006, 14:17
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
Hola nuevamente, ya resolvi el problema...busque en la pagina de msdn y encontre la solución, una simple sentencia como esta:

SET @Identity = SCOPE_IDENTITY()

Tengo que estudiar SQL...estoy retardado

Gracias!
  #6 (permalink)  
Antiguo 14/07/2006, 14:47
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
DBCC CHECKIDENT(SOLICITANTE, RESEED,1)

Usar esto hará que la tabla siempre se resetee a 1, tendrás problemas de choques de llaves a menos que adicionalmente vacíes la tabla.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #7 (permalink)  
Antiguo 14/07/2006, 22:49
 
Fecha de Ingreso: mayo-2005
Mensajes: 274
Antigüedad: 19 años
Puntos: 0
Ok!..bueno la sentencia que me indicas solo la utilizo cuando elimino todos los registros para que comience en uno el id y luego la elimino.

Gracias de todas formas por la observacion!
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 03:08.