6

Hola utilizando SQL Server 2008,MSSQL: ¿No se pueden crear relaciones para dos claves externas en la misma tabla?

He construido una pequeña base de datos para una liga de béisbol, estoy teniendo relaciones crear problemas entre los equipos (PK: ID del equipo) y GameSchedule (PK: gameid, FK1: HomeTeamID, FK2: AwayTeamID)

Quiero crear relaciones influye la GameSchedule HomeTeamID, AwayTeamID a los equipos (ID del equipo)

Siempre que trato de hacer esto me da un error: (la ID del equipo ya es la clave principal de Equipos)

tabla 'Equipos' guardada con éxito tabla 'GameSchedule' - No se ha podido crear la relación 'FK_GameSchedule_Teams'.
La instrucción ALTER TABLE entró en conflicto con la restricción FOREIGN KEY "FK_GameSchedule_Teams". El conflicto ocurrió en la base de datos "sll_2009", en la tabla "dbo.Teams", en la columna "TeamID".

+0

¿Ha especificado las reglas de eliminación y actualización para esas relaciones? –

+7

Presumiblemente tiene datos existentes que no cumplen con la restricción que está tratando de agregar. –

+0

Más información: Creé una base de datos de parque vacío y pude crear las dos tablas y todas las relaciones, el problema es que en la base de datos real, tengo registros existentes y no me permite crear la relación. – Eric

Respuesta

6
create table GameSchedule (
     GameID  integer not null 
    , HomeTeamID integer not null 
    , AwayTeamID integer not null 
); 

alter table GameSchedule 
    add constraint pk_gsch primary key (GameID) 
, add constraint fk1_gsch foreign key (HomeTeamID) references Teams (TeamID) 
, add constraint fk2_gsch foreign key (AwayTeamID) references Teams (TeamID) 
; 
+0

Otorga el mismo error: – Eric

+0

Msg 547, nivel 16, estado 0, línea 1 La instrucción ALTER TABLE está en conflicto con la restricción FOREIGN KEY "fk1_gsch". El conflicto ocurrió en la base de datos "sll_2009", en la tabla "dbo.Teams", en la columna "TeamID". – Eric

+9

Bueno, resolví el problema, tuve que desmarcar la casilla: Verificar datos existentes en la creación: (establecido en 'NO') ¡y funcionó! Gracias. – Eric

Cuestiones relacionadas