Wie werden alle NULL-Werte der Bit-Typspalte in MSSQL in der gesamten Datenbank auf "false" gesetzt?

7

Ich habe eine Datenbank mit Ich habe viele Bit-Typ-Spalten. Nach dem Hinzufügen anderer Spalten brauche ich alle alten Spalten, um "falsche" Standardwerte zu haben.

    
Sergey Khojoyan 06.09.2012, 13:32
quelle

2 Antworten

18

Um jede alte Spalte auf 0 zu aktualisieren, können Sie diese Abfrage (spaltenweise) verwenden:

%Vor%

Wenn Sie möchten, dass zukünftige Werte ebenfalls den Standardwert 0 haben, verwenden Sie Folgendes:

%Vor%

Nun müssen Sie das gegen jede alte Spalte ausführen, also haben Sie hoffentlich nicht zu viele.

    
LittleBobbyTables 06.09.2012 13:46
quelle
3

Dieses geschachtelte dynamische SQL wird den Job erreichen, wenn Sie dies nicht nacheinander tun möchten. Beachten Sie, dass keine Überprüfung durchgeführt wird, um zu bestätigen, dass die Spalte nicht bereits über eine Standardeinschränkung verfügt (was auch dann möglich ist, wenn die Spalte nullfähig ist), das Skript jedoch erweitert werden kann (und sogar gelöscht werden kann) solch eine Einschränkung, falls es Standard 1) ist.

%Vor%

Es ist wirklich hässlich anzusehen, und der PRINT -Befehl ist aufgrund von Ausgabebeschränkungen in Management Studio nicht unbedingt vollständig. Aber sobald Sie sicher sind, dass die ersten Befehle richtig aussehen, können Sie das auskommentieren und die vorletzte Zeile auskommentieren und das Skript erneut ausführen, um die Änderungen vorzunehmen. Das GO ist da, weil einige ausfallen können. Möglicherweise möchten Sie für jede db / table / column-Kombination eine Druckausgabe hinzufügen, damit Sie Statusmeldungen drucken können, um mögliche Fehler leichter mit der tatsächlichen db / table / column zu korrelieren.

    
Aaron Bertrand 06.09.2012 14:26
quelle