Si tiene un compuesto clave principal, luego todas las restricciones de clave externa que hacen referencia a ella deben usar todas las columnas de la clave primaria compuesta.
Entonces, en su caso, TableTwo
debe referencia TableOne(ReportID, Date)
La única forma de evitar esto sería crear un UNIQUE INDEX
en TableOne (ReportID)
- luego puede crear una referencia de clave externa solo a esa restricción única.
Pero eso plantea la pregunta:¿por qué no es ReportID
solo la clave principal, si ya es única (ya que puedes poner un UNIQUE INDEX
en él) y NOT NULL (ya que es parte del compuesto PK) ?
Paso 1:crea el UNIQUE INDEX
:
CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
Paso 2:crea la clave externa desde TableTwo
:
ALTER TABLE dbo.TableTwo
ADD CONSTRAINT FK_TableTwo_TableOne
FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)