Eine andere Verwendung, die in keiner der vorherigen Antworten erwähnt wurde, ist die einfachere Bereitstellung von Änderungen an der Tabellenstruktur.
Angenommen, Sie möchten eine Tabelle ( T_OLD
) mit Daten für aktive Benutzer zurückziehen und stattdessen eine neue Tabelle mit ähnlichen Daten (mit Namen T_NEW
) verwenden, die jedoch Daten für aktive und inaktive Benutzer enthält, mit einer zusätzlichen Spalte active
.
Wenn Ihre Systeme über unzählige Abfragen verfügen SELECT whatever FROM T_OLD WHERE whatever
, haben Sie zwei Möglichkeiten für den Roll-out:
1) Cold Turkey - Ändern Sie die Datenbank und ändern, testen und veröffentlichen Sie gleichzeitig zahlreiche Codeteile, die diese Abfrage enthielten. Sehr schwer zu tun (oder sogar zu koordinieren), sehr riskant. Schlecht.
2) Schrittweise - die DB ändern , indem die Erstellung von T_NEW
Tabelle des Tropft T_OLD
Tisch und stattdessen eine Schaffung VIEW genannt T_OLD
dass ahmt die T_OLD
Tabelle 100% ( zum Beispiel der Ansicht Abfrage ist SELECT all_fields_except_active FROM T_NEW WHERE active=1
).
Das würde Ihnen ermöglicht , Code zu vermeiden Freigabe , dass zur Zeit wählt aus T_OLD
und führen Sie die Änderungen an Migrate - Code von T_OLD
bis T_NEW
zur freien Verfügung .
Dies ist ein einfaches Beispiel, da sind andere viel mehr involviert.
PS Auf der anderen Seite hätten Sie wahrscheinlich eine API für gespeicherte Prozeduren anstelle von direkten Abfragen von haben sollen T_OLD
, aber das ist nicht immer der Fall.