none
como hago una llave foranea hacia otra tabla en otro servidor RRS feed

  • Pregunta

  • tengo que hacer una conexión en sql de dos servidores y el problema es que tengo que hacer referencia de una llave foranea a una tabla que yo no tengo en mi servidor.

    en mi servidor 1 tengo las tablas alumno y kardex dentro de mi tabla alumnos tengo el IDA que es mi llave primaria y el campo nombre, dentro de kardex tengo el IDK mi llave primaria y las llaves foraneas de la tabla alumno y la tabla materias, la tabla materias es la que se encuentra en el servidor 2 no se como hacer una llave foranea a la tabla que yo no tengo.

    la conexión ya esta pero desconozco la sintaxis. si alguien me puede ayudar por favor 

    domingo, 17 de diciembre de 2017 15:22

Respuestas

  • No, no es posible crear un restricción FOREIGN KEY referenciando a una columna (PK, UNIQUE) de una tabla que no existe en la base de datos. Una salida, nada segura, es mantener la integridad mediante un trigger INSTEAD OF (INSERT, UPDATE) en la base de datos "1" y también en la base de datos "2": un trigger INSTEAD OF DELETE para evitar "referencias nulas" en la base de datos "1". Sin embargo, reitero, que nada de esto es seguro, no hay garantías de integridad, por ejemplo, ¿qué sucede si -por cualquier razón- se restaura la base de datos "2" a una fecha donde no existían claves que ya fueron referenciadas?. Creo que una solución razonable es crear, en la base de datos "1", una copia de la tabla y mantener los datos actualizados mediante cualquier forma de sincronización que te permita el motor de base de datos que ocupes.
    domingo, 17 de diciembre de 2017 15:57

Todas las respuestas

  • Hola que tal. 

    No se pueden referenciar Foreign Keys a hacia tablas de diferentes servidores. Para poder realizar una restricción de integridad referencial entre diferentes servidores lo deberías implementar con Triggers (CREATE TRIGGER (Transact-SQL)).

    Ref.:

    https://docs.microsoft.com/es-es/sql/relational-databases/tables/create-foreign-key-relationships

    Saludos.

    --------------------------

    Si la respuesta fue de utilidad no olvides Marcarla como Util


    Mariano K.

    domingo, 17 de diciembre de 2017 15:36
  • No, no es posible crear un restricción FOREIGN KEY referenciando a una columna (PK, UNIQUE) de una tabla que no existe en la base de datos. Una salida, nada segura, es mantener la integridad mediante un trigger INSTEAD OF (INSERT, UPDATE) en la base de datos "1" y también en la base de datos "2": un trigger INSTEAD OF DELETE para evitar "referencias nulas" en la base de datos "1". Sin embargo, reitero, que nada de esto es seguro, no hay garantías de integridad, por ejemplo, ¿qué sucede si -por cualquier razón- se restaura la base de datos "2" a una fecha donde no existían claves que ya fueron referenciadas?. Creo que una solución razonable es crear, en la base de datos "1", una copia de la tabla y mantener los datos actualizados mediante cualquier forma de sincronización que te permita el motor de base de datos que ocupes.
    domingo, 17 de diciembre de 2017 15:57