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

Fremdschlüssel auf Tabelle aus anderer Datenbank

Ich würde dies vermeiden, wenn ich könnte - können Sie einfach beide Tabellen in einer Datenbank halten und einen FK verwenden?

Übergeordnete und untergeordnete Tabellen befinden sich in unterschiedlichen Datenbanken.

Obwohl Sie in dieser Situation keinen Fremdschlüssel verwenden können, gibt es Problemumgehungen – Sie können entweder Trigger oder UDFs verwenden, die in Check Constraints eingeschlossen sind. In jedem Fall ist Ihre Datenintegrität nicht vollständig wasserdicht:Wenn die Datenbank mit Ihrer übergeordneten Tabelle abstürzt und Sie sie aus einem Backup wiederherstellen, können Sie leicht mit Waisenkindern enden.

Eltern-Kind-Beziehung wird durch Auslöser erzwungen.

Es gibt einige Situationen, in denen Trigger nicht ausgelöst werden, wie zum Beispiel:

· Eine Tabelle wird gelöscht.

· Eine Tabelle wird abgeschnitten.

· Einstellungen für verschachtelte und/oder rekursive Trigger verhindern, dass ein Trigger ausgelöst wird.

Auch ein Trigger kann einfach falsch sein. So oder so, Sie könnten am Ende Waisenkinder in Ihrer Datenbank haben.