none
filtro RRS feed

  • Pregunta

  • Buenos dias soy nuevo y quería saber como relacionar 2 tablas, una con una key(numeropedido) 

    y la otra con clave compuesta(numeropedido + presupuesto), si las relaciono sólo por numeropedido

    me da error en sql.

    miércoles, 15 de febrero de 2017 12:36

Respuestas

  • Equipoc,

    Una restricción FOREIGN KEY hace referencia a una columna -de la tabla referenciada- que tiene una restricción PRIMARY KEY o UNIQUE KEY.

    ¿La tabla referenciada tiene una clave primaria compuesta?, entonces la restricción FOREIGN KEY debe hacer referencia a todas las columnas que participan en la clave primaria:

    ALTER TABLE dbo.TablaDestino ADD CONSTRAINT FK_NombreRestriccion FOREIGN KEY (Col1, Col2)
        REFERENCES dbo.TableOrigen (Col1, Col2);
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 15 de febrero de 2017 14:36

Todas las respuestas

  • Equipoc,

    Una restricción FOREIGN KEY hace referencia a una columna -de la tabla referenciada- que tiene una restricción PRIMARY KEY o UNIQUE KEY.

    ¿La tabla referenciada tiene una clave primaria compuesta?, entonces la restricción FOREIGN KEY debe hacer referencia a todas las columnas que participan en la clave primaria:

    ALTER TABLE dbo.TablaDestino ADD CONSTRAINT FK_NombreRestriccion FOREIGN KEY (Col1, Col2)
        REFERENCES dbo.TableOrigen (Col1, Col2);
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 15 de febrero de 2017 14:36
  • Hola:

    Adicionando a lo que dice Williams, no puedes relacionar 1 columna con 2, deben ser la misma cantidad de columnas y los tipos de datos equivalentes.


    SERGIO SANCHEZ ARIAS
    facebook twitter blogger google

    miércoles, 15 de febrero de 2017 15:16
  • Buenos dias soy nuevo y quería saber como relacionar 2 tablas, una con una key(numeropedido) 

    y la otra con clave compuesta(numeropedido + presupuesto), si las relaciono sólo por numeropedido

    me da error en sql.

    Que significa exactamente compuesta(numeropedido + presupuesto)?

    Si la tabla con clave (numeropedido, presupuesto) puede contener varias filas de un mismo pedido entonces me inmagino que esta referencia a la tabla con clave (numeropedido), en cuyo caso no tiene por que dar error siempre y cuando hagas la relacion desde el lado muchos hacia el lado de uno (tabla referenciada debe contener clave primaria o restriccion de unicidad o indice unico por las columnas usadas en la referencia).

    CREATE TABLE dbo.T1 (
    numeropedido int NOT NULL PRIMARY KEY
    )
    GO
    CREATE TABLE dbo.T2 (
    numeropedido int NOT NULL,
    presupuesto int NOT NULL,
    CONSTRAINT PK_T2 PRIMARY KEY (numeropedido, presupuesto),
    CONSTRAINT FK_T1_T2 FOREIGN KEY (numeropedido) REFERENCES dbo.T1(numeropedido)
    )
    GO
    DROP TABLE dbo.T2, dbo.T1
    GO


    AMB

    Some guidelines for posting questions...

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


    • Editado HunchbackMVP miércoles, 15 de febrero de 2017 16:04
    miércoles, 15 de febrero de 2017 15:31