SQL Server - Foreign Key SQL SERVER

 
Vista:

Foreign Key SQL SERVER

Publicado por Mike (1 intervención) el 29/05/2007 10:25:04
Hola, al intentar ejecutar una sentencia como la siguiente:

INSERT INTO tableG
(Id,OffKey, Name, TypeId, GId, DisplayGId)
VALUES (9998,'A', 'B', 5, 9998,9998)

me dice que:

No se puede insertar un valor explícito en la columna de identidad de la tabla 'tableG' cuando IDENTITY_INSERT es OFF.

Poniendo SET IDENTITY_INSERT tableG ON me dice que:

Instrucción INSERT en conflicto con la restricción FOREIGN KEY "FK_tableG_tableF". El conflicto ha aparecido en la base de datos "BD", tabla "dbo.tableF", column 'Id'.

Y la tableF es otra tabla sobre la que no estoy actuando.

Y si pruebo a quitar el campo Id del INSERT

INSERT INTO tableG
(OffKey, Name, TypeId, GId, DisplayGId)
VALUES ('A', 'B', 5, 9998,9998)

me dice como ERROR:

Es necesario especificar un valor explícito para la columna de identidad de la tabla 'tableG' cuando IDENTITY_INSERT es ON o cuando un usuario de réplica realiza la inserción en una columna de identidad NOT FOR REPLICATION.

¿Sabría alguien decirme qué puedo hacer para poder añadir los registros?

Gracias.
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:Foreign Key SQL SERVER

Publicado por bearu (12 intervenciones) el 29/05/2007 12:31:24
Creo que estás mezclando dos soluciones.
Si IDENTITY_INSERT es ON, debes de indicarle el valor para ese campo.
Para probar tu segunda opción (la de no indicarle el id), tienes que hacer que IDENTITY_INSERT esté a OFF (puede que haya entendido mal, pero creo que al probar la segunda opción lo tenías a ON).
Si prefieres la primera opción has de comprobar si tienes alguna restricción de clave foranea con la tabla F del tipo "no puedes insertar un id en G si no está en F primero"...

Espero que esto te ayude en algo :)
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:Foreign Key SQL SERVER

Publicado por Enver (1 intervención) el 12/03/2008 20:01:52
a mi me pasa algo parecido pero no tengo restriccione al respecto, es un programa en vb.net asp.net 2005
aqui esta el codigo:

INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_LamReportes_GRUPO'. The conflict occurred in database 'LAMINACION', table 'GRUPO', column 'GRUPO_ID'.
The statement has been terminated.

Protected Sub GR_BUT_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles GR_BUT.Click
'' Verifica que los Drop's esten escogido.
If OPC2_DLL.SelectedValue.ToString = "" Then
ShowError("Por Favor Seleccione Un Turno")
OPC2_DLL.Focus()
Exit Sub
End If
If Turno_DLL.SelectedValue.ToString = "" Then
ShowError("Por Favor Seleccione Un Grupo")
Turno_DLL.Focus()
Exit Sub
End If
If DLTIPO.SelectedValue.ToString = "" Then
ShowError("Por Favor Seleccione Un Tipo")
DLTIPO.Focus()
Exit Sub
End If
If MATPRIM_DLL.SelectedValue.ToString = "" Then
ShowError("Por Favor Seleccione Una Materia")
MATPRIM_DLL.Focus()
Exit Sub
End If
If PROD_DLL.SelectedValue.ToString = "" Then
ShowError("Por Favor Seleccione Un Producto")
PROD_DLL.Focus()
Exit Sub
End If

''parte principal se guarda
Try
SMLBusinessLayer.DatatB.Guardared(ValidValue.GetValidValueInt(DLTIPO.SelectedValue), _
ValidValue.GetValidValueInt(MATPRIM_DLL.SelectedValue), ValidValue.GetValidString(PROD_DLL.SelectedValue.ToString), _
ValidValue.GetValidValueDate(TxtFecha.Text & " " & TxtHora.Text), _
ValidValue.GetValidValueInt(TxtLAmin.Text), ValidValue.GetValidDouble(TxtLH.Text), _
ValidValue.GetValidDouble(TxtPERD.Text), ValidValue.GetValidDouble(TxtATAD.Text), ValidValue.GetValidValueInt(TxtPOT.Text), _
ValidValue.GetValidValueInt(TxtCOMB.Text), ValidValue.GetValidDouble(TxtSH1.Text), _
ValidValue.GetValidDouble(TxtSH2.Text), ValidValue.GetValidDouble(TxtCMC.Text), _
ValidValue.GetValidDouble(TxtIR.Text), ValidValue.GetValidDouble(TxtPRIM.Text), _
ValidValue.GetValidDouble(TxtSeg.Text), ValidValue.GetValidDouble(TxtCUar.Text), _
ValidValue.GetValidDouble(TxtCur.Text), ValidValue.GetValidValueInt(TxtPED.Text))
Catch ex As Exception
ShowError(ex.Message)
End Try

''cabecera se guarda
Try

''aqui es donde tengo el problema en donde pide el grupo del dropdownlist.

SMLBusinessLayer.DatatB.Cargar(Me.DropDownList1.SelectedValue, ValidValue.GetValidValueDate(Me.TxtFecha.Text), Me.Turno_DLL.SelectedValue, Me.GRUPO_DLL.SelectedValue, _
Me.OPC1_DLL.SelectedValue, Me.OPH_DLL.SelectedValue, Me.OPT_DLL.SelectedValue, Me.JE_DLL.SelectedValue, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
Catch ex As Exception
ShowError(ex.Message)
End Try


End Sub

''la funcion.
Public Shared Function Cargar(ByVal Turno As Integer, ByVal Fecha As DateTime, ByVal Grp As Integer, ByVal OpTurno As Integer, ByVal OpCab1 As Integer, ByVal OpCab2 As Integer, ByVal OpH As Integer, ByVal JE As Integer, ByVal TC As Double, ByVal TL As Double, ByVal TE As Double, ByVal TPP As Double, ByVal TR As Double, ByVal TI As Double, ByVal TIM As Double, ByVal TIO As Double, ByVal TPPM As Double, ByVal TPPO As Double) As Integer
Dim SqlConn As SqlConnection = New SqlConnection(ConnectionStrings("LAMINACIONConnectionString").ToString)
Dim SqlCmd As New SqlClient.SqlCommand("GuardarDatosProduccion", SqlConn)
SqlCmd.CommandType = CommandType.StoredProcedure

SqlCmd.Parameters.Add("@Turno", SqlDbType.Int).Value = Turno
SqlCmd.Parameters.Add("@Fecha", SqlDbType.DateTime).Value = Fecha
SqlCmd.Parameters.Add("@Grp", SqlDbType.Int).Value = Grp
SqlCmd.Parameters.Add("@OpTurno", SqlDbType.Int).Value = IIf(OpTurno = -1, DBNull.Value, OpTurno)
SqlCmd.Parameters.Add("@OpCab1", SqlDbType.Int).Value = IIf(OpCab1 = -1, DBNull.Value, OpCab1)
SqlCmd.Parameters.Add("@OpCab2", SqlDbType.Int).Value = IIf(OpCab2 = -1, DBNull.Value, OpCab2)
SqlCmd.Parameters.Add("@OpH", SqlDbType.Int).Value = IIf(OpH = -1, DBNull.Value, OpH)
SqlCmd.Parameters.Add("@JE", SqlDbType.Int).Value = IIf(JE = -1, DBNull.Value, JE)
SqlCmd.Parameters.Add("@TC", SqlDbType.Float).Value = IIf(TC = -1, DBNull.Value, TC)
SqlCmd.Parameters.Add("@TL", SqlDbType.Float).Value = IIf(TL = -1, DBNull.Value, TL)
SqlCmd.Parameters.Add("@TE", SqlDbType.Float).Value = IIf(TE = -1, DBNull.Value, TE)
SqlCmd.Parameters.Add("@TPP", SqlDbType.Float).Value = IIf(TPP = -1, DBNull.Value, TPP)
SqlCmd.Parameters.Add("@TR", SqlDbType.Float).Value = IIf(TR = -1, DBNull.Value, TR)
SqlCmd.Parameters.Add("@TI", SqlDbType.Float).Value = IIf(TI = -1, DBNull.Value, TI)
SqlCmd.Parameters.Add("@TIM", SqlDbType.Float).Value = IIf(TIM = -1, DBNull.Value, TIM)
SqlCmd.Parameters.Add("@TIO", SqlDbType.Float).Value = IIf(TIO = -1, DBNull.Value, TIO)
SqlCmd.Parameters.Add("@TPPM", SqlDbType.Float).Value = IIf(TPPM = -1, DBNull.Value, TPPM)
SqlCmd.Parameters.Add("@TPPO", SqlDbType.Float).Value = IIf(TPPO = -1, DBNull.Value, TPPO)

SqlConn.Open()
SqlCmd.ExecuteNonQuery()
SqlConn.Close()
SqlConn.Dispose()
End Function

store procedure.
USE [LAMINACION]
GO
/****** Object: StoredProcedure [dbo].[GuardarDatosProduccion] Script Date: 03/12/2008 12:39:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[GuardarDatosProduccion]
(
@Turno int,
@Fecha datetime,
@Grp int,
@OpTurno int = null,
@OpCab1 int = null,
@OpCab2 int = null,
@OpH int = null,
@JE int = null,
@TC float = null,
@TL float = null,
@TE float = null,
@TPP float = null,
@TR float = null,
@TI float = null,
@TIM float = null,
@TIO float = null,
@TPPM float = null,
@TPPO float = null
)
AS
DECLARE @Turno2 int
SELECT @Turno2 = Turno_ID FROM TURNO
BEGIN
INSERT
INTO [LAMINACION].[dbo].[LamReportes]
(
[Turno_ID],
[Fecha],
[Grupo_ID],
[OpTurno],
[OpCabina1],
[OpCabina2],
[OpHorno],
[JefeEquipo],
[TC],
[TL],
[TE],
[TPP],
[TR],
[TI],
[TIM],
[TIO],
[TPPM],
[TPPO]
)
VALUES
(
@Turno,
@Fecha,
@Grp,
@OpTurno,
@OpCab1,
@OpCab2,
@OpH,
@JE,
@TC,
@TL,
@TE,
@TPP,
@TR,
@TI,
@TIM,
@TIO,
@TPPM,
@TPPO
)
END

ESpero su Ayuda 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

RE:Foreign Key SQL SERVER

Publicado por Candido (1 intervención) el 06/11/2008 11:00:26
1NS3RT st2t3m3nt c0nfl1ct3d w1th C0LUMN F0R31GN K3Y c0nstr21nt 'FK_L2mR3p0rt3s_GRUP0'. Th3 c0nfl1ct 0ccurr3d 1n d2t2b2s3 'L2M1N2C10N', t2bl3 'GRUP0', c0lumn 'GRUP0_1D'.
Th3 st2t3m3nt h2s b33n t3rm1n2t3d.
Pr0t3ct3d Sub GR_BUT_Cl1ck(ByV2l s3nd3r 2s 0bj3ct, ByV2l 3 2s Syst3m.3v3nt2rgs) H2ndl3s GR_BUT.Cl1ck
'' V3r1f1c2 qu3 l0s Dr0p's 3st3n 3sc0g1d0.
1f 0PC2_DLL.S3l3ct3dV2lu3.T0Str1ng = "" Th3n
Sh0w3rr0r("P0r F2v0r S3l3cc10n3 Un Turn0")
0PC2_DLL.F0cus()
3x1t Sub
3nd 1f
1f Turn0_DLL.S3l3ct3dV2lu3.T0Str1ng = "" Th3n
Sh0w3rr0r("P0r F2v0r S3l3cc10n3 Un Grup0")
Turn0_DLL.F0cus()
3x1t Sub
3nd 1f
1f DLT1P0.S3l3ct3dV2lu3.T0Str1ng = "" Th3n
Sh0w3rr0r("P0r F2v0r S3l3cc10n3 Un T1p0")
DLT1P0.F0cus()
3x1t Sub
3nd 1f
1f M2TPR1M_DLL.S3l3ct3dV2lu3.T0Str1ng = "" Th3n
Sh0w3rr0r("P0r F2v0r S3l3cc10n3 Un2 M2t3r12")
M2TPR1M_DLL.F0cus()
3x1t Sub
3nd 1f
1f PR0D_DLL.S3l3ct3dV2lu3.T0Str1ng = "" Th3n
Sh0w3rr0r("P0r F2v0r S3l3cc10n3 Un Pr0duct0")
PR0D_DLL.F0cus()
3x1t Sub
3nd 1f
''p2rt3 pr1nc1p2l s3 gu2rd2
Try
SMLBus1n3ssL2y3r.D2t2tB.Gu2rd2r3d(V2l1dV2lu3.G3tV2l1dV2lu31nt(DLT1P0.S3l3ct3dV2lu3), _
V2l1dV2lu3.G3tV2l1dV2lu31nt(M2TPR1M_DLL.S3l3ct3dV2lu3), V2l1dV2lu3.G3tV2l1dStr1ng(PR0D_DLL.S3l3ct3dV2lu3.T0Str1ng), _
V2l1dV2lu3.G3tV2l1dV2lu3D2t3(TxtF3ch2.T3xt & " " & TxtH0r2.T3xt), _
V2l1dV2lu3.G3tV2l1dV2lu31nt(TxtL2m1n.T3xt), V2l1dV2lu3.G3tV2l1dD0ubl3(TxtLH.T3xt), _
V2l1dV2lu3.G3tV2l1dD0ubl3(TxtP3RD.T3xt), V2l1dV2lu3.G3tV2l1dD0ubl3(Txt2T2D.T3xt), V2l1dV2lu3.G3tV2l1dV2lu31nt(TxtP0T.T3xt), _
V2l1dV2lu3.G3tV2l1dV2lu31nt(TxtC0MB.T3xt), V2l1dV2lu3.G3tV2l1dD0ubl3(TxtSH1.T3xt), _
V2l1dV2lu3.G3tV2l1dD0ubl3(TxtSH2.T3xt), V2l1dV2lu3.G3tV2l1dD0ubl3(TxtCMC.T3xt), _
V2l1dV2lu3.G3tV2l1dD0ubl3(Txt1R.T3xt), V2l1dV2lu3.G3tV2l1dD0ubl3(TxtPR1M.T3xt), _
V2l1dV2lu3.G3tV2l1dD0ubl3(TxtS3g.T3xt), V2l1dV2lu3.G3tV2l1dD0ubl3(TxtCU2r.T3xt), _
V2l1dV2lu3.G3tV2l1dD0ubl3(TxtCur.T3xt), V2l1dV2lu3.G3tV2l1dV2lu31nt(TxtP3D.T3xt))
C2tch 3x 2s 3xc3pt10n
Sh0w3rr0r(3x.M3ss2g3)
3nd Try
''c2b3c3r2 s3 gu2rd2
Try
''2qu1 3s d0nd3 t3ng0 3l pr0bl3m2 3n d0nd3 p1d3 3l grup0 d3l dr0pd0wnl1st.
SMLBus1n3ssL2y3r.D2t2tB.C2rg2r(M3.Dr0pD0wnL1st1.S3l3ct3dV2lu3, V2l1dV2lu3.G3tV2l1dV2lu3D2t3(M3.TxtF3ch2.T3xt), M3.Turn0_DLL.S3l3ct3dV2lu3, M3.GRUP0_DLL.S3l3ct3dV2lu3, _
M3.0PC1_DLL.S3l3ct3dV2lu3, M3.0PH_DLL.S3l3ct3dV2lu3, M3.0PT_DLL.S3l3ct3dV2lu3, M3.J3_DLL.S3l3ct3dV2lu3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1)
C2tch 3x 2s 3xc3pt10n
Sh0w3rr0r(3x.M3ss2g3)
3nd Try

3nd Sub
''l2 func10n.
Publ1c Sh2r3d Funct10n C2rg2r(ByV2l Turn0 2s 1nt3g3r, ByV2l F3ch2 2s D2t3T1m3, ByV2l Grp 2s 1nt3g3r, ByV2l 0pTurn0 2s 1nt3g3r, ByV2l 0pC2b1 2s 1nt3g3r, ByV2l 0pC2b2 2s 1nt3g3r, ByV2l 0pH 2s 1nt3g3r, ByV2l J3 2s 1nt3g3r, ByV2l TC 2s D0ubl3, ByV2l TL 2s D0ubl3, ByV2l T3 2s D0ubl3, ByV2l TPP 2s D0ubl3, ByV2l TR 2s D0ubl3, ByV2l T1 2s D0ubl3, ByV2l T1M 2s D0ubl3, ByV2l T10 2s D0ubl3, ByV2l TPPM 2s D0ubl3, ByV2l TPP0 2s D0ubl3) 2s 1nt3g3r
D1m SqlC0nn 2s SqlC0nn3ct10n = N3w SqlC0nn3ct10n(C0nn3ct10nStr1ngs("L2M1N2C10NC0nn3ct10nStr1ng").T0Str1ng)
D1m SqlCmd 2s N3w SqlCl13nt.SqlC0mm2nd("Gu2rd2rD2t0sPr0ducc10n", SqlC0nn)
SqlCmd.C0mm2ndTyp3 = C0mm2ndTyp3.St0r3dPr0c3dur3
SqlCmd.P2r2m3t3rs.2dd("@Turn0", SqlDbTyp3.1nt).V2lu3 = Turn0
SqlCmd.P2r2m3t3rs.2dd("@F3ch2", SqlDbTyp3.D2t3T1m3).V2lu3 = F3ch2
SqlCmd.P2r2m3t3rs.2dd("@Grp", SqlDbTyp3.1nt).V2lu3 = Grp
SqlCmd.P2r2m3t3rs.2dd("@0pTurn0", SqlDbTyp3.1nt).V2lu3 = 11f(0pTurn0 = -1, DBNull.V2lu3, 0pTurn0)
SqlCmd.P2r2m3t3rs.2dd("@0pC2b1", SqlDbTyp3.1nt).V2lu3 = 11f(0pC2b1 = -1, DBNull.V2lu3, 0pC2b1)
SqlCmd.P2r2m3t3rs.2dd("@0pC2b2", SqlDbTyp3.1nt).V2lu3 = 11f(0pC2b2 = -1, DBNull.V2lu3, 0pC2b2)
SqlCmd.P2r2m3t3rs.2dd("@0pH", SqlDbTyp3.1nt).V2lu3 = 11f(0pH = -1, DBNull.V2lu3, 0pH)
SqlCmd.P2r2m3t3rs.2dd("@J3", SqlDbTyp3.1nt).V2lu3 = 11f(J3 = -1, DBNull.V2lu3, J3)
SqlCmd.P2r2m3t3rs.2dd("@TC", SqlDbTyp3.Fl02t).V2lu3 = 11f(TC = -1, DBNull.V2lu3, TC)
SqlCmd.P2r2m3t3rs.2dd("@TL", SqlDbTyp3.Fl02t).V2lu3 = 11f(TL = -1, DBNull.V2lu3, TL)
SqlCmd.P2r2m3t3rs.2dd("@T3", SqlDbTyp3.Fl02t).V2lu3 = 11f(T3 = -1, DBNull.V2lu3, T3)
SqlCmd.P2r2m3t3rs.2dd("@TPP", SqlDbTyp3.Fl02t).V2lu3 = 11f(TPP = -1, DBNull.V2lu3, TPP)
SqlCmd.P2r2m3t3rs.2dd("@TR", SqlDbTyp3.Fl02t).V2lu3 = 11f(TR = -1, DBNull.V2lu3, TR)
SqlCmd.P2r2m3t3rs.2dd("@T1", SqlDbTyp3.Fl02t).V2lu3 = 11f(T1 = -1, DBNull.V2lu3, T1)
SqlCmd.P2r2m3t3rs.2dd("@T1M", SqlDbTyp3.Fl02t).V2lu3 = 11f(T1M = -1, DBNull.V2lu3, T1M)
SqlCmd.P2r2m3t3rs.2dd("@T10", SqlDbTyp3.Fl02t).V2lu3 = 11f(T10 = -1, DBNull.V2lu3, T10)
SqlCmd.P2r2m3t3rs.2dd("@TPPM", SqlDbTyp3.Fl02t).V2lu3 = 11f(TPPM = -1, DBNull.V2lu3, TPPM)
SqlCmd.P2r2m3t3rs.2dd("@TPP0", SqlDbTyp3.Fl02t).V2lu3 = 11f(TPP0 = -1, DBNull.V2lu3, TPP0)
SqlC0nn.0p3n()
SqlCmd.3x3cut3N0nQu3ry()
SqlC0nn.Cl0s3()
SqlC0nn.D1sp0s3()
3nd Funct10n
st0r3 pr0c3dur3.
US3 [L2M1N2C10N]
G0
/****** 0bj3ct: St0r3dPr0c3dur3 [db0].[Gu2rd2rD2t0sPr0ducc10n] Scr1pt D2t3: 03/12/2008 12:39:09 ******/
S3T 2NS1_NULLS 0N
G0
S3T QU0T3D_1D3NT1F13R 0N
G0
2LT3R PR0C3DUR3 [db0].[Gu2rd2rD2t0sPr0ducc10n]
(
@Turn0 1nt,
@F3ch2 d2t3t1m3,
@Grp 1nt,
@0pTurn0 1nt = null,
@0pC2b1 1nt = null,
@0pC2b2 1nt = null,
@0pH 1nt = null,
@J3 1nt = null,
@TC fl02t = null,
@TL fl02t = null,
@T3 fl02t = null,
@TPP fl02t = null,
@TR fl02t = null,
@T1 fl02t = null,
@T1M fl02t = null,
@T10 fl02t = null,
@TPPM fl02t = null,
@TPP0 fl02t = null
)
2S
D3CL2R3 @Turn02 1nt
S3L3CT @Turn02 = Turn0_1D FR0M TURN0
B3G1N
1NS3RT
1NT0 [L2M1N2C10N].[db0].[L2mR3p0rt3s]
(
[Turn0_1D],
[F3ch2],
[Grup0_1D],
[0pTurn0],
[0pC2b1n21],
[0pC2b1n22],
[0pH0rn0],
[J3f33qu1p0],
[TC],
[TL],
[T3],
[TPP],
[TR],
[T1],
[T1M],
[T10],
[TPPM],
[TPP0]
)
V2LU3S
(
@Turn0,
@F3ch2,
@Grp,
@0pTurn0,
@0pC2b1,
@0pC2b2,
@0pH,
@J3,
@TC,
@TL,
@T3,
@TPP,
@TR,
@T1,
@T1M,
@T10,
@TPPM,
@TPP0
)
3ND



¿De verdad crees que va a ayudarte alguien?
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:Foreign Key SQL SERVER

Publicado por Envarado (1 intervención) el 06/11/2008 11:02:07
me gotea una tuberia. Enver ¿me la arreglas?
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