Une relation n'est autre qu'une jointure entre deux table. C'est possible entre
différentes bases et différents serveurs même hétérogènes (ex Oracle / SQL Server).
Si tu veut parler d'intégrité référentielle, donc de contrainte FOREIGN KEY,
non, cela n'est pas pris en charge :
***** DÉMO ******
CREATE DATABASE _test
GO
CREATE DATABASE _test2
GO
Use _test
GO
CREATE TABLE TEST_in (COL1 INT NOT NULL PRIMARY KEY)
GO
Use _test2
GO
CREATE TABLE TEST_out (COL1 INT NOT NULL PRIMARY KEY,
COL2 INT FOREIGN KEY
REFERENCES _test..TEST_in (COL1))
GO
/*
Serveur : Msg 1763, Niveau 16, État 1, Ligne 1
Les références de clés étrangères aux bases de données croisées ne sont pas
prises en charge. Clé étrangère '_test..TEST_in'.
Serveur : Msg 1750, Niveau 16, État 1, Ligne 1
Impossible de créer la contrainte. Voir les erreurs précédentes.
*/
****************
En revanche tu peut faire cela par trigger. Mais pose toi la question de
l'évolution des bases et des serveurs :
si la base distante est mise sur un autre serveur et que ce dernier à besoin
d'être arrêté pour des raisons de maintenance, alors ta base primale sera
bloquée car en attente de validation des effets du curseur.
Mieux vaut donc privilégié une procédure stockée qui gérera le cas d'absence de
la base distante, ou la réplication (asynchrone).
Partager