SQL Server: Berechnete Spalte ändern
-
09-06-2019 - |
Frage
Kennt jemand eine Möglichkeit, eine berechnete Spalte zu ändern, ohne die Spalte in SQL Server zu löschen?Ich möchte die Spalte nicht mehr als berechnete Spalte verwenden und Daten direkt in der Spalte speichern, möchte aber die aktuellen Werte beibehalten.
Ist das überhaupt möglich?
Lösung
Nicht, dass ich es wüsste, aber hier ist etwas, was Sie tun können
Fügen Sie der Tabellen -Update diese Spalte mit den Werten der Computerspalte hinzu und lassen Sie die Computerspalte ab
Andere Tipps
Okay, mal sehen, ob ich das richtig verstanden habe.Sie möchten eine aktuell berechnete Spalte in eine Plain-Jane-Datenspalte umwandeln.Normalerweise würde dies die Spalte löschen, aber Sie möchten die Daten in der Spalte behalten.
- Erstellen Sie eine neue Tabelle mit den Primärschlüsselspalten aus Ihrer Quelltabelle und der generierten Spalte.
- Kopieren Sie die Daten aus Ihrer Quelltabelle in die neue Tabelle.
- Ändern Sie die Spalte in Ihrer Quelltabelle.
- Kopieren Sie die Daten zurück.
Egal, was Sie tun, ich bin mir ziemlich sicher, dass eine Änderung der Spalte sie löschen wird.Dieser Weg ist etwas komplexer, aber nicht so schlimm und schont Ihre Daten.
[Bearbeiten:Die Antwort von @SqlMenace ist viel einfacher.:) Verflucht sei die Bedrohung!!:)]
Wenn Sie den Namen der Spalte beibehalten müssen (um den Clientcode nicht zu beschädigen), müssen Sie die Spalte löschen und eine gespeicherte Spalte mit demselben Namen wieder hinzufügen.Sie können dies ohne Ausfallzeiten tun, indem Sie die Änderungen (nach dem Vorbild der SQLMenace-Lösung) in einer einzigen Transaktion vornehmen.Hier ist ein Pseudocode:
begin transaction drop computed colum X add stored column X populate column using the old formula commit transaction