Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Cómo poner una clave foránea que apunte a otra base de datos

Estas en el tema de Cómo poner una clave foránea que apunte a otra base de datos en el foro de Bases de Datos General en Foros del Web. Me gustaría saber cómo hacer eso. Es decir, normalmente, escribiría esto si estoy creando una tabla: create table USUARIOS id smallint identity, casa, id_externa REFERENCES ...
  #1 (permalink)  
Antiguo 04/05/2005, 21:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Cómo poner una clave foránea que apunte a otra base de datos

Me gustaría saber cómo hacer eso. Es decir, normalmente, escribiría esto si estoy creando una tabla:

create table USUARIOS id smallint identity, casa, id_externa REFERENCES tabla1(id)...

bueno, la clave foránea la pondría en la parte de REFERENCES. Pero en este caso, esa "tabla1" de ejemplo que he puesto se encuentra en otra base de datos. ¿Qué escribir para que apunte a la tabla de la otra base de datos? (por cierto, para no ponerlo muy difícil, por suerte dicha tabla está incluida en el mismo servidor de SQL Server).

Estoy con SQL Server 2000.
  #2 (permalink)  
Antiguo 05/05/2005, 14:50
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
No se puede. Es una de las restricciones en SQL Server (ignoro si alguna otra lo permite), pero en SQL Server no lo podrás hacer.

Si te interesa mucho entonces lo puedes simular mediante triggers, pero el uso de las FKs no existe entre diferentes DBs
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 05/05/2005, 17:30
 
Fecha de Ingreso: febrero-2005
Mensajes: 1.015
Antigüedad: 19 años, 2 meses
Puntos: 6
Vaya, gracias Mithrandir. Si no se puede... entonces qué. ¿No pongo integridad referencial? ¿A fiarse? Vaya cagada entonces... antes o después surgirán los errores porque no se actualice mi base de datos con los valores de la otra.

Es que la cosa es esta: quieren poner una base de datos de un tema (supongamos, Clientes), separada, no integrada en la base de datos de lo que estoy haciendo. ¿Por qué? Porque esa base de datos la van a usar distintos departamentos (por llamarle de alguna forma, o distintos programas encargados de otras cuestiones). Y eso es lo que pasa... En fin ya veré...
  #4 (permalink)  
Antiguo 06/05/2005, 15:02
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
El quien la use no me parece razon sufuciente para crearla en otro lugar, para eso existe la seguridad y permisos, que no tenga acceso a esa parte quien no lo deba tener. Si no lo puedes evitar por que los usuarios están dentro del rol data_reader o pero aún, db_owner entonces el problema es una mala administración, mas no tanto un problema de SQL Server.

No veo razones claras sobre las ventajas que les daría crear una nueva DB.

Pero como te dije, con triggers puedes simular la integridad referencial, por ejemplo

IF EXISTS(SELECT campo FROM Inserted WHERE llave NOT IN(SELECT llave FROM tabla_madre))
BEGIN --Alguna llave no existe en el catalogo "madre"
RAISERROR('Error, al menos una de las claves insertadas no existe.', 16, 1)
ROLLBACK TRAN
END
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:40.