Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fremdschlüsselbeziehung zwischen zwei Datenbanken hinzufügen

Sie müssten die referenzielle Einschränkung über Datenbanken hinweg mit einem Trigger verwalten.

Grundsätzlich erstellen Sie einen Insert-Update-Trigger, um die Existenz des Schlüssels in der Primärschlüsseltabelle zu überprüfen. Wenn der Schlüssel nicht existiert, machen Sie die Einfügung oder Aktualisierung rückgängig und behandeln Sie dann die Ausnahme.

Beispiel:

Create Trigger dbo.MyTableTrigger ON dbo.MyTable, After Insert, Update
As
Begin

   If NOT Exists(select PK from OtherDB.dbo.TableName where PK in (Select FK from inserted) BEGIN
      -- Handle the Referential Error Here
   END

END

Bearbeitet: Nur um klarzustellen. Dies ist nicht der beste Ansatz zur Durchsetzung der referenziellen Integrität. Idealerweise möchten Sie beide Tabellen in derselben Datenbank haben, aber wenn das nicht möglich ist. Dann ist das obige eine mögliche Problemumgehung für Sie.