Como se puede hacer esto?

08/06/2004 - 16:00 por Alf | Informe spam
Tengo dos bases de Datos por ejemplo: Arranque y Gestion.

En la primera tengo una tabla Poblaciones y en la segunda una tabla de
Clientes con un Campo PoblaArraID que quiero que contenga sólo valores de
Arranque.Poblaciones.

Sin utilizar un desencadenador para tal evento se podría crear una relación
entre la dos tablas de dos bases de datos diferentes.
A modo de ejemplo:

ALTER TABLE Gestion.dbo.Clientes
ADD FOREIGN KEY (PoblaArraID) REFERENCES Arranque.dbo.Poblaciones
(PoblacionesID)

Pero dice que no lo soporta.

En caso de que sólo sirva un desencadenador me indicais un ejemplo.


Muchas gracias de antemano.


Un saludo. Agur
 

Leer las respuestas

#1 Javier Loria
08/06/2004 - 16:40 | Informe spam
Hola:
Una de las razones mas fuertes para no usar multiples Bases de Datos es
que NO PUEDES usar integridad referencial declarativa (no puedes usar Llaves
Foraneas).
En este caso la alternativa es usar Disparadores o usar una sola BD. En
principio te recomiendo la segunda (usar una BD), por razones de seguridad,
desempeno y facilidad de mantenimiento.
Si siempre quieres hacer esto por triggers, deberas crear 5 Triggers, 3
Triggers para INSERT, DELETE Y UPDATE en la tabla Clientes. Adicionalmente 2
Triggers para UPDATE y DELETE de la tabla Poblaciones.
Una guia podria ser el siguiente Trigger:
CREATE TRIGGER ClientesIns ON Clientes
FOR INSERT
AS
IF EXISTS (SELECT *
FROM Inserted
LEFT JOIN Arranque.dbo.Poblaciones AS P
ON Inserted.PoblaArraID=P.PoblacionesID
WHERE P.PoblacionesID IS NULL)
BEGIN
RAISERROR (...)
ROLLBACK
END
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Alf escribio:
Tengo dos bases de Datos por ejemplo: Arranque y Gestion.

En la primera tengo una tabla Poblaciones y en la segunda una tabla de
Clientes con un Campo PoblaArraID que quiero que contenga sólo
valores de Arranque.Poblaciones.

Sin utilizar un desencadenador para tal evento se podría crear una
relación entre la dos tablas de dos bases de datos diferentes.
A modo de ejemplo:

ALTER TABLE Gestion.dbo.Clientes
ADD FOREIGN KEY (PoblaArraID) REFERENCES Arranque.dbo.Poblaciones
(PoblacionesID)

Pero dice que no lo soporta.

En caso de que sólo sirva un desencadenador me indicais un ejemplo.


Muchas gracias de antemano.

Preguntas similares