SQL - Ayuda con PK Compuesta

 
Vista:

Ayuda con PK Compuesta

Publicado por Lunnaticoo (3 intervenciones) el 13/03/2008 23:27:55
Holas..

Necesito q me ayuden con este problemita..

Resulta que necesito ingresarle a una tabla n registro pero no puedo ya q esta tiene como PK datos compuestos ( Docentry,NumLine ) y no se como se hace para insertar los registro ya que me dice q no se puede repetir un campo ya q es unico.. bla,bla,bla.....

Ejemplo de datos:

DocEntry | NumLine

30 0
30 1
30 2
30 3

Como se hace ??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con PK Compuesta

Publicado por Isaias (5072 intervenciones) el 14/03/2008 02:31:51
-- Aqui sin error
INSERT INTO tutabla (Docentry, NumLine)
VALUES (30,4)
-- Si intento volver a ingresar los mimsos datos
INSERT INTO tutabla (Docentry, NumLine)
VALUES (30,4)

Me debe mandar mensaje de error de duplicidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con PK Compuesta

Publicado por Lunnaticoo (3 intervenciones) el 14/03/2008 14:05:04
Holas..

Ya solucione mi problema..... Solo era un error de datos, ya que estaba ingresando en el doc entry un dato que ya existia..

------------- ERROR ----------------

declare @docentry int
declare @doc int
declare @num int
declare @lin int

set @docentry =5
select @doc=(count(docentry))+1 from opdn

INSERT INTO OPDN
(DocEntry, DocNum, CardCode, CardName, NumAtCard,DocDate, DocDueDate, TaxDate)
(
SELECT
@doc,@doc,T0.CardCode, T0.CardName, T0.NumAtCard, T0.DocDate, T0.DocDueDate, T0.TaxDate
FROM
OPOR T0
WHERE
T0.Docentry =@docentry
)
print @doc

INSERT INTO PDN1
(DocEntry,LineNum,ItemCode, Dscription, Quantity, DiscPrcnt, TaxCode, U_cod_z, U_val_cif, U_porc_imp, U_val_cif_t)
(
SELECT
@DocEntry ------------------------> DATOS YA EXISTENTE EN LA TABLA
,T1.LineNum,T1.ItemCode, T1.Dscription, T1.Quantity, T1.DiscPrcnt, T1.TaxCode, T1.U_cod_z, T1.U_val_cif, T1.U_porc_imp, T1.U_val_cif_t
FROM
POR1 T1
WHERE
T1.Docentry =@docentry
)

---------------------- MODIFICADO -----------------------------

declare @docentry int
declare @doc int
declare @num int
declare @lin int

set @docentry =5
select @doc=(count(docentry))+1 from opdn

INSERT INTO OPDN
(DocEntry, DocNum, CardCode, CardName, NumAtCard,DocDate, DocDueDate, TaxDate)
(
SELECT
@doc,@doc,T0.CardCode, T0.CardName, T0.NumAtCard, T0.DocDate, T0.DocDueDate, T0.TaxDate
FROM
OPOR T0
WHERE
T0.Docentry =@docentry
)
print @doc

INSERT INTO PDN1
(DocEntry,LineNum,ItemCode, Dscription, Quantity, DiscPrcnt, TaxCode, U_cod_z, U_val_cif, U_porc_imp, U_val_cif_t)
(
SELECT
@doc,---------------------------> NUEVO DATO EL CUAL NO EXISTE EN LA TABLA
T1.LineNum,T1.ItemCode, T1.Dscription, T1.Quantity, T1.DiscPrcnt, T1.TaxCode, T1.U_cod_z, T1.U_val_cif, T1.U_porc_imp, T1.U_val_cif_t
FROM
POR1 T1
WHERE
T1.Docentry =@docentry
)



Gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar