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

Wie können Fremdschlüsseleinschränkungen mit T-SQL vorübergehend deaktiviert werden?

Wenn Sie alle Einschränkungen in der Datenbank deaktivieren möchten, führen Sie einfach diesen Code aus:

-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

Um sie wieder einzuschalten, führen Sie Folgendes aus:(Der Ausdruck ist natürlich optional und listet nur die Tabellen auf)

-- enable all constraints
exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

Ich finde es nützlich, wenn ich Daten von einer Datenbank in eine andere übertrage. Es ist ein viel besserer Ansatz, als Einschränkungen fallen zu lassen. Wie Sie bereits erwähnt haben, ist es praktisch, wenn Sie alle Daten in der Datenbank löschen und neu füllen (z. B. in einer Testumgebung).

Wenn Sie alle Daten löschen, ist diese Lösung möglicherweise hilfreich.

Manchmal ist es auch praktisch, alle Trigger zu deaktivieren, die vollständige Lösung finden Sie hier.