Duda con SP recoger PK de tabla relacionada.

29/11/2005 - 18:10 por Jose | Informe spam
Hola a todos tengo el siguiente SP el cual inserta los datos en 2 tablas
diferentes una es MORTGAGE (PK idmortgage) y la otra MORTGAGE_PRODUCT (PK
idmorproduct), estas 2 tablas estan relacionadas entre si
MORTGAGE.idmortgage one to many MORTGAGE_PRODUCT.idmortgage .

El problema está en que cuando se hace el insert en la primera tabla todo va
bien, pero en la segunda (mortgage_product) en el campo
MORTGAGE_PRODUCT.idmortgage he de poner el ID que ha creado en la primera
(MORTGAGE.idmortgage).

Es decir, tengo que recoger el id que ha creado en ese momento en la tabla
MORTGAGE y ponerlo en el campo idmortgage de MORTGAGE_PRODUCT

Gracias !

J.

USE testdb
GO
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='SPCREATEMORT'AND TYPE='P')
BEGIN
DROP PROCEDURE SPCREATEMORT
END
GO
USE testdb
GO
CREATE PROCEDURE SPCREATEMORT

@BRANCH VARCHAR(50),
@NAME VARCHAR(50),
@CITY VARCHAR(50),
@PC NUMERIC(5,0),
@TELF NUMERIC(13,0),
@CONTACTPERSON VARCHAR(50),
@EMAIL VARCHAR(50),
@NOTES TEXT,

@DESCRIPTION VARCHAR(50),
@FINANCING NUMERIC(3,0),
@GARATOR BIT,
@MAXLOAN NUMERIC(9,0),
@MINLOAN NUMERIC(9,0),
@YEARS NUMERIC(2,0),
@INMIGRANT BIT,
@WORKCONDITIONS VARCHAR(50),
@CIRBEREQUEST BIT,
@AGESTART NUMERIC(2,0),
@AGEFINISH NUMERIC(2,0),
@RATIOINDEB NUMERIC(4,0),
@INTEREST DECIMAL(4,0),
@COMOPEN DECIMAL(4,0),
@COMCLOSE DECIMAL(4,0)

AS

INSERT INTO MORTGAGE (BRANCH,NAME,CITY,PC,TELF,CONTACTPERSON,EMAIL,NOTES)
VALUES (@BRANCH,@NAME,@CITY,@PC,@TELF,@CONTACTPERSON,@EMAIL,@NOTES)

INSERT INTO MORTGAGE_PRODUCT
(DESCRIPTION,FINANCING,GARATOR,MAXLOAN,MINLOAN,YEARS,INMIGRANT,WORKCONDITIONS,CIRBEREQUEST,AGESTART,AGEFINISH,RATIOINDEB,INTEREST,COMOPEN,COMCLOSE)
VALUES(@DESCRIPTION,@FINANCING,@GARATOR,@MAXLOAN,@MINLOAN,@YEARS,@INMIGRANT,@WORKCONDITIONS,@CIRBEREQUEST,@AGESTART,@AGEFINISH,@RATIOINDEB,@INTEREST,@COMOPEN,@COMCLOSE)

Preguntas similare

Leer las respuestas

#1 Jose
29/11/2005 - 19:12 | Informe spam
Hola alejandro,
primero de todo queria darte las gracias por contestar con tanta rapidez y
segundo que la funcion que me has dado me ha funcionado a la perfección.

Muchisimas Gracias

J.

"Alejandro Mesa" escribió en el
mensaje news:
Jose,

Me inmagino que la columna MORTGAGE.idmortgage tenga propiedad identity
"on". De ser asi usa la funcion SCOPE_IDENTITY.

declare @i int

begin transaction

INSERT INTO MORTGAGE (BRANCH,NAME,CITY,PC,TELF,CONTACTPERSON,EMAIL,NOTES)
VALUES (@BRANCH,@NAME,@CITY,@PC,@TELF,@CONTACTPERSON,@EMAIL,@NOTES)

if @@error != 0
begin
rollback transaction
raiserror ('Error insertando en MORTGAGE.', 16, 1)
return -1
end

set @i = SCOPE_IDENTITY()

INSERT INTO MORTGAGE_PRODUCT
(idmortgage,
DESCRIPTION,FINANCING,GARATOR,MAXLOAN,MINLOAN,YEARS,INMIGRANT,WORKCONDITIONS,CIRBEREQUEST,AGESTART,AGEFINISH,RATIOINDEB,INTEREST,COMOPEN,COMCLOSE)
VALUES(@i,
@DESCRIPTION,@FINANCING,@GARATOR,@MAXLOAN,@MINLOAN,@YEARS,@INMIGRANT,@WORKCONDITIONS,@CIRBEREQUEST,@AGESTART,@AGEFINISH,@RATIOINDEB,@INTEREST,@COMOPEN,@COMCLOSE)

if @@error != 0
begin
rollback transaction
raiserror ('Error insertando en MORTGAGE.', 16, 1)
return -1
end
else
if @@trancount > 0
begin
commit transaction
return @@error
end
...


AMB

"Jose" wrote:

Hola a todos tengo el siguiente SP el cual inserta los datos en 2 tablas
diferentes una es MORTGAGE (PK idmortgage) y la otra MORTGAGE_PRODUCT (PK
idmorproduct), estas 2 tablas estan relacionadas entre si
MORTGAGE.idmortgage one to many MORTGAGE_PRODUCT.idmortgage .

El problema está en que cuando se hace el insert en la primera tabla todo
va
bien, pero en la segunda (mortgage_product) en el campo
MORTGAGE_PRODUCT.idmortgage he de poner el ID que ha creado en la primera
(MORTGAGE.idmortgage).

Es decir, tengo que recoger el id que ha creado en ese momento en la
tabla
MORTGAGE y ponerlo en el campo idmortgage de MORTGAGE_PRODUCT

Gracias !

J.

USE testdb
GO
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='SPCREATEMORT'AND
TYPE='P')
BEGIN
DROP PROCEDURE SPCREATEMORT
END
GO
USE testdb
GO
CREATE PROCEDURE SPCREATEMORT

@BRANCH VARCHAR(50),
@NAME VARCHAR(50),
@CITY VARCHAR(50),
@PC NUMERIC(5,0),
@TELF NUMERIC(13,0),
@CONTACTPERSON VARCHAR(50),
@EMAIL VARCHAR(50),
@NOTES TEXT,

@DESCRIPTION VARCHAR(50),
@FINANCING NUMERIC(3,0),
@GARATOR BIT,
@MAXLOAN NUMERIC(9,0),
@MINLOAN NUMERIC(9,0),
@YEARS NUMERIC(2,0),
@INMIGRANT BIT,
@WORKCONDITIONS VARCHAR(50),
@CIRBEREQUEST BIT,
@AGESTART NUMERIC(2,0),
@AGEFINISH NUMERIC(2,0),
@RATIOINDEB NUMERIC(4,0),
@INTEREST DECIMAL(4,0),
@COMOPEN DECIMAL(4,0),
@COMCLOSE DECIMAL(4,0)

AS

INSERT INTO MORTGAGE (BRANCH,NAME,CITY,PC,TELF,CONTACTPERSON,EMAIL,NOTES)
VALUES (@BRANCH,@NAME,@CITY,@PC,@TELF,@CONTACTPERSON,@EMAIL,@NOTES)

INSERT INTO MORTGAGE_PRODUCT
(DESCRIPTION,FINANCING,GARATOR,MAXLOAN,MINLOAN,YEARS,INMIGRANT,WORKCONDITIONS,CIRBEREQUEST,AGESTART,AGEFINISH,RATIOINDEB,INTEREST,COMOPEN,COMCLOSE)

VALUES(@DESCRIPTION,@FINANCING,@GARATOR,@MAXLOAN,@MINLOAN,@YEARS,@INMIGRANT,@WORKCONDITIONS,@CIRBEREQUEST,@AGESTART,@AGEFINISH,@RATIOINDEB,@INTEREST,@COMOPEN,@COMCLOSE)


Respuesta Responder a este mensaje
#2 Alejandro Mesa
29/11/2005 - 19:25 | Informe spam
Jose,

Me inmagino que la columna MORTGAGE.idmortgage tenga propiedad identity
"on". De ser asi usa la funcion SCOPE_IDENTITY.

declare @i int

begin transaction

INSERT INTO MORTGAGE (BRANCH,NAME,CITY,PC,TELF,CONTACTPERSON,EMAIL,NOTES)
VALUES (@BRANCH,@NAME,@CITY,@PC,@TELF,@CONTACTPERSON,@EMAIL,@NOTES)

if @@error != 0
begin
rollback transaction
raiserror ('Error insertando en MORTGAGE.', 16, 1)
return -1
end

set @i = SCOPE_IDENTITY()

INSERT INTO MORTGAGE_PRODUCT
(idmortgage,
DESCRIPTION,FINANCING,GARATOR,MAXLOAN,MINLOAN,YEARS,INMIGRANT,WORKCONDITIONS,CIRBEREQUEST,AGESTART,AGEFINISH,RATIOINDEB,INTEREST,COMOPEN,COMCLOSE)
VALUES(@i,
@DESCRIPTION,@FINANCING,@GARATOR,@MAXLOAN,@MINLOAN,@YEARS,@INMIGRANT,@WORKCONDITIONS,@CIRBEREQUEST,@AGESTART,@AGEFINISH,@RATIOINDEB,@INTEREST,@COMOPEN,@COMCLOSE)

if @@error != 0
begin
rollback transaction
raiserror ('Error insertando en MORTGAGE.', 16, 1)
return -1
end
else
if @@trancount > 0
begin
commit transaction
return @@error
end
...


AMB

"Jose" wrote:

Hola a todos tengo el siguiente SP el cual inserta los datos en 2 tablas
diferentes una es MORTGAGE (PK idmortgage) y la otra MORTGAGE_PRODUCT (PK
idmorproduct), estas 2 tablas estan relacionadas entre si
MORTGAGE.idmortgage one to many MORTGAGE_PRODUCT.idmortgage .

El problema está en que cuando se hace el insert en la primera tabla todo va
bien, pero en la segunda (mortgage_product) en el campo
MORTGAGE_PRODUCT.idmortgage he de poner el ID que ha creado en la primera
(MORTGAGE.idmortgage).

Es decir, tengo que recoger el id que ha creado en ese momento en la tabla
MORTGAGE y ponerlo en el campo idmortgage de MORTGAGE_PRODUCT

Gracias !

J.

USE testdb
GO
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='SPCREATEMORT'AND TYPE='P')
BEGIN
DROP PROCEDURE SPCREATEMORT
END
GO
USE testdb
GO
CREATE PROCEDURE SPCREATEMORT

@BRANCH VARCHAR(50),
@NAME VARCHAR(50),
@CITY VARCHAR(50),
@PC NUMERIC(5,0),
@TELF NUMERIC(13,0),
@CONTACTPERSON VARCHAR(50),
@EMAIL VARCHAR(50),
@NOTES TEXT,

@DESCRIPTION VARCHAR(50),
@FINANCING NUMERIC(3,0),
@GARATOR BIT,
@MAXLOAN NUMERIC(9,0),
@MINLOAN NUMERIC(9,0),
@YEARS NUMERIC(2,0),
@INMIGRANT BIT,
@WORKCONDITIONS VARCHAR(50),
@CIRBEREQUEST BIT,
@AGESTART NUMERIC(2,0),
@AGEFINISH NUMERIC(2,0),
@RATIOINDEB NUMERIC(4,0),
@INTEREST DECIMAL(4,0),
@COMOPEN DECIMAL(4,0),
@COMCLOSE DECIMAL(4,0)

AS

INSERT INTO MORTGAGE (BRANCH,NAME,CITY,PC,TELF,CONTACTPERSON,EMAIL,NOTES)
VALUES (@BRANCH,@NAME,@CITY,@PC,@TELF,@CONTACTPERSON,@EMAIL,@NOTES)

INSERT INTO MORTGAGE_PRODUCT
(DESCRIPTION,FINANCING,GARATOR,MAXLOAN,MINLOAN,YEARS,INMIGRANT,WORKCONDITIONS,CIRBEREQUEST,AGESTART,AGEFINISH,RATIOINDEB,INTEREST,COMOPEN,COMCLOSE)
VALUES(@DESCRIPTION,@FINANCING,@GARATOR,@MAXLOAN,@MINLOAN,@YEARS,@INMIGRANT,@WORKCONDITIONS,@CIRBEREQUEST,@AGESTART,@AGEFINISH,@RATIOINDEB,@INTEREST,@COMOPEN,@COMCLOSE)


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