Ich suche nach einer Möglichkeit, alle DB-Einschränkungen (z. B. Tabellenbeziehungen) vorübergehend zu deaktivieren.
Ich muss die Tabellen einer Datenbank (mit INSERTs) in eine andere Datenbank kopieren. Ich weiß, dass ich das erreichen kann, indem ich Befehle in der richtigen Reihenfolge ausführe (um Beziehungen nicht zu unterbrechen).
Es wäre jedoch einfacher, wenn ich die Überprüfungsbeschränkungen vorübergehend deaktivieren und nach Abschluss der Operation wieder einschalten könnte.
Ist das möglich?
sql-server
undsql-server-2005
Tags. Der Link, den ich gegeben habe, ist für SQL Server, aber Sie können dasselbe in Oracle tun - siehe hier und hier . Sie können dies auch in PostgreSQL tun .Antworten:
Sie können
FK-und CHECK-Einschränkungennur in SQL 2005+ deaktivieren. Siehe ALTER TABLEoder
Primärschlüssel und eindeutige Einschränkungen können nicht deaktiviert werden. Dies sollte jedoch in Ordnung sein, wenn ich Sie richtig verstanden habe.
quelle
quelle
check check
das viele Leute vergessen !!Und wenn Sie überprüfen möchten, ob Sie Ihre Beziehungen NICHT unterbrochen und Waisenkinder eingeführt haben, nachdem Sie Ihre Schecks erneut aktiviert haben, d. H.
oder
Dann können Sie zurücklaufen und ein Update für alle aktivierten Spalten durchführen, z. B.:
Und alle Fehler an diesem Punkt sind darauf zurückzuführen, dass die Einschränkungen nicht eingehalten werden.
quelle
Sie können tatsächlich alle Datenbankeinschränkungen in einem einzelnen SQL-Befehl deaktivieren und sie erneut aktivieren, indem Sie einen anderen einzelnen Befehl aufrufen. Sehen:
Ich arbeite derzeit mit SQL Server 2005, bin mir aber fast sicher, dass dieser Ansatz auch mit SQL 2000 funktioniert hat
quelle
Deaktivieren und Aktivieren aller Fremdschlüssel
Siehe Deaktivieren von Einschränkungen und Triggern im MSDN Magazine
quelle