none
Uso de FOREIGN KEY RRS feed

  • Pregunta

  • Buen día, estoy creando una tabla (tabla hereda) que contiene una foreign key (campo1) en tanto que la llave primaria de la referencia tiene (campo 1, campo2) primary key, no requiero en mi tabla (hereda) considerar los dos campos, como podría solucionarlo?

    Gracias

    miércoles, 10 de abril de 2019 15:07

Todas las respuestas

  • Por que no quieres considerar las dos columnas que forman la clave primaria de la tabla a la que se referencia?

    Pudieras usar una clave subrrogada en la tabla a la que se referencia pero esto tiene sus pros y contras como en todo.


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    miércoles, 10 de abril de 2019 15:19
  • solo requiero un campo porque es el que me da la referencia de que existe ese valor en tanto el otro solo es un id que no requiero conocer por la tabla heredada
    miércoles, 10 de abril de 2019 15:47
  • Si, pero la REGLA de las FOREING KEY son heredar el contenido de las PRIMARY KEY, no creo que pueda romper esa regla.

    O como bien dice:

    Avatar de jpz9110
    jpz9110

    Llave subrogada, con sus pros y contras.


    IIslas Master Consultant SQL Server

    miércoles, 10 de abril de 2019 22:15
  • Si, pero la REGLA de las FOREING KEY son heredar el contenido de las PRIMARY KEY, no creo que pueda romper esa regla.

    Sí, se puede romper. La regla es que la foreign key tiene que apuntar a la clave primaria o bien a una columna o combinación de columnas que tenga un índice UNIQUE (o una restricción de unicidad que internamente es equivalente a crear el índice UNIQUE).

    Así que en este caso la solución sería esa: agregar un UNIQUE sobre la columna hacia la que quieres conectar el foreign key.

    jueves, 11 de abril de 2019 6:40
  • Tienes mucha razón Alberto, nunca se me hubiera ocurrido hacer dicho "truco"

    Adding the Unique Constraint -IF NOT EXISTS (SELECT 1 FROM sys.objects WHERE type_desc = 'UNIQUE_CONSTRAINT' AND OBJECT_NAME(parent_object_id) = 'Countries' AND OBJECT_NAME(OBJECT_ID) = 'UC_Countries')BEGIN	ALTER TABLE [dbo].Countries 	ADD  CONSTRAINT [UC_Countries] UNIQUE NONCLUSTERED 	([CountryCode] 	)ENDGOAdding the Foreign Key relationship -IF NOT EXISTS  (SELECT 1 FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_States_Countries]') AND parent_object_id = OBJECT_ID(N'[dbo].[States]'))BEGIN	ALTER TABLE [dbo].[States]  WITH CHECK ADD CONSTRAINT [FK_States_Countries] FOREIGN KEY([CountryCode])	REFERENCES [dbo].[Countries] ([UC_Countries])ENDGO


    IIslas Master Consultant SQL Server

    viernes, 12 de abril de 2019 17:48