SQL Server - Problema con FOREIGN KEy

   
Vista:

Problema con FOREIGN KEy

Publicado por avitara@hotmail.comandres (27 intervenciones) el 20/11/2007 15:18:28
Mi problema es el siguiente :

No funciona este codigo. Se supone que una tabla puede tener mas de una Foreign Key, pero no anda

------------------
--Foreign Key
------------------

CREATE TABLE [dbo].[T1] (
[CA] [int] NOT NULL CHECK([CA]>0),
[AR] [int] NOT NULL CHECK([AR]>0)

CONSTRAINT [T1_CA_PK] PRIMARY KEY ([CA],[AR])

CONSTRAINT [T1_CA_FK1] FOREIGN KEY ([CA],[AR]) REFERENCES [DBO].[T2] ([CA],[AR])
CONSTRAINT [T1_AR_FK2] FOREIGN KEY ([AR]) REFERENCES [DBO].[T3] ([AR])

) ON [PRIMARY]

--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--
CREATE TABLE [dbo].[T2] (
[PUI] [bigint] CHECK([PUI]>0),
[CA] [int] NOT NULL CHECK([CA]>0),
[AR] [int] NOT NULL CHECK([AR]>0),
[PUO] [bigint] CHECK([PUO]>0)

CONSTRAINT [T2_CA_PK] PRIMARY KEY ([CA],[AR])

CONSTRAINT [T2_CA_FK1] FOREIGN KEY ([CA],[AR]) REFERENCES [DBO].[T1] ([CA],[AR])
CONSTRAINT [T2_AR_FK2] FOREIGN KEY ([AR]) REFERENCES [DBO].[T3] ([AR])

) ON [PRIMARY]

--HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH--
CREATE TABLE [dbo].[T3] (
[AR] [int] NOT NULL UNIQUE CHECK([AR]>0)

CONSTRAINT [T3_AR_PK] PRIMARY KEY ([AR])

CONSTRAINT [T3_AR_FK1] FOREIGN KEY ([AR]) REFERENCES [DBO].[T1] ([AR])
CONSTRAINT [T3_AR_FK2] FOREIGN KEY ([AR]) REFERENCES [DBO].[T2] ([AR])

) ON [PRIMARY]
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:Problema con FOREIGN KEy

Publicado por Liliana (151 intervenciones) el 29/11/2007 14:54:55
Hola,
probablemente esta respuesta llegue tarde, pero aún así creo que vale la pena dejar una explicación a lo que planteas.

Es un poco complejo tu esquema de trabajo, por las fk que enlazan a todas las tablas entre sí, te voy a proponer un nuevo esquema y te pido que si no cumple con tus necesidades, me expliques cuál es el objetivo.

Como primer paso, la definición de las tablas, sin más restricciones que las claves primarias:

CREATE TABLE [dbo].[T1] (
[CA] [int] NOT NULL CHECK([CA]>0),
[AR] [int] NOT NULL CHECK([AR]>0)

CONSTRAINT [T1_CA_PK] PRIMARY KEY ([CA],[AR])
) ON [PRIMARY]

--

CREATE TABLE [dbo].[T2] (
[PUI] [bigint] CHECK([PUI]>0),
[CA] [int] NOT NULL CHECK([CA]>0),
[AR] [int] NOT NULL CHECK([AR]>0),
[PUO] [bigint] CHECK([PUO]>0)

CONSTRAINT [T2_CA_PK] PRIMARY KEY ([CA],[AR])
) ON [PRIMARY]

--

CREATE TABLE [dbo].[T3] (
[AR] [int] NOT NULL UNIQUE CHECK([AR]>0)

CONSTRAINT [T3_AR_PK] PRIMARY KEY ([AR])
) ON [PRIMARY]
GO

Y a continuación las FK, que creo yo que te cubre la integridad de los datos:

alter table t1 add CONSTRAINT [T1_CA_FK1] FOREIGN KEY ([CA],[AR]) REFERENCES [DBO].[T2] ([CA],[AR])

alter table t1 add CONSTRAINT [T1_AR_FK2] FOREIGN KEY ([AR]) REFERENCES [DBO].[T3] ([AR])

alter table t2 add CONSTRAINT [T2_AR_FK2] FOREIGN KEY ([AR]) REFERENCES [DBO].[T3] ([AR])

Espero que te sirva,
Liliana.
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