Kann dies auch in großen Mengen durchgeführt werden? Damit alle Spalten in der Tabelle so eingestellt werden können, dass das Flag 'NOT NULL' ausgeschaltet wird?Gibt es eine Möglichkeit, eine Spalte zu ändern, um 'NOT NULL' auszuschalten?
Antwort
Sie können eine ALTER TABLE xxx ALTER COLUMN-Anweisung verwenden, um die Spalte neu zu definieren.
Ist dies eine einmalige Sache, die Sie ausführen müssen, können Sie einen Trick verwenden, indem Sie eine Abfrage zu schreiben, die die Spaltennamen für die Tabelle aus dem System/dba Tabelle abfragt und erzeugen Ihre Alte Aussage. Sie kopieren die Ergebnisse der Abfrage (Ihre 15 oder wie viele alter-Anweisungen) in Ihr Skript und führen es einfach aus. Ich habe nicht viel Erfahrung MSSQL noch eine Umgebung jetzt testen auf, aber etwas entlang der Linien von:
SELECT
'ALTER TABLE ' + table_name + ' ALTER COLUMN ' + column_name + ' ' + data_type
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_NAME = 'xxx'
, wo Sie den data_type Teil manipulieren müssen hinzufügen/entfernen Sie den NULL Text
Cool, gibt es irgendeine Möglichkeit, dies in einer Schleife zu tun, um jede Spalte von zu durchlaufen Wenn ja, können Sie dann den Code erklären/anzeigen? – Stephen
Die obige Abfrage gibt mehrere ALTER TABLE-Skripte aus, eines für jede Spalte, die nacheinander alle Spalten ändern –
Ja, Sie können es tun. Lesen Sie Bücher online.
Nein, es kann nicht in großen Mengen durchgeführt werden, aber Sie können mehrere Anweisungen in einer einzigen Abfrage ausführen.
Das Problem ist, dass die Tabelle sooo viele Spalten hat, die für immer dauern würde :( – Stephen
Nun, wenn die Tabelle so viele Spalten hat, dass Sie es nicht manuell tun können, dann sollten Sie * wirklich * Ihr Tischdesign überdenken :-(. Wie auch immer, Sie könnten die ALTER-Anweisung entweder in T-SQL (sollte machbar sein) oder nur in ein Skript schreiben, das die ALTER-Anweisungen generiert – sleske
Rufen Sie eine Liste der Spalten und eine Vorlage ab, die die erforderliche SQL enthält, und verwenden Sie ein Tool zum Erstellen der Anweisungen für Sie. Ich habe dies in Excel schon einmal gemacht, aber Sie könnten ein echtes Programm mit Ihrer Sprache Ihrer Wahl schreiben.
es in der Masse zu tun, wenn ...
Verwenden SSMS Designer ein Skript zu generieren. Dadurch wird die Tabelle neu erstellt (temporäre Tabelle erstellen, Daten kopieren, alte Tabelle löschen, temporäre Tabelle umbenennen).
Ansonsten ist es einen nach dem anderen TABLE ALTER ...
Wenn die Anzahl der Tabellen ist niedrig genug, ich bin mit SSMSE (SQL Server Management Studio Express), indem Sie auf jeden Tisch Entwurfsmodus eingeben und Überprüfen Sie Lassen Sie NULL in den erforderlichen Spalten.
Für eine größere Anzahl von Tabellen versuchen Sie die Antwort von ChrisCM.
- 1. Gibt es eine Möglichkeit, jquery noconflict Modus in Wordpress auszuschalten?
- 2. Gibt es eine Möglichkeit, reloadOnSearch in einem Controller bedingt auszuschalten?
- 3. Gibt es eine C++ Funktion, um den Computer auszuschalten?
- 4. Ändern Sie eine Spalte zu NULL - Oracle
- 5. Gibt es eine Möglichkeit, eine Tabelle umzukehren, um die Spaltenüberschriften zu ändern?
- 6. Gibt es eine Möglichkeit, etwas in mysql gleich zu ändern?
- 7. Gibt es eine einfache Möglichkeit, um mehrere Sprachpakete bei der Verwendung von Nuget auszuschalten?
- 8. SQL Server statt Einfügen von Triggern - gibt es eine einfache Möglichkeit, eine einzelne Spalte zu ändern?
- 9. Gibt es eine Möglichkeit zu sagen, ob ReactElement "null" darstellt?
- 10. Gibt es eine Möglichkeit, die Zeit stapelweise zu ändern?
- 11. Gibt es eine Möglichkeit zu verhindern, dass UIImagePickerController Statusleiste ändern?
- 12. Gibt es eine Möglichkeit, einen laufenden Countdown zu ändern?
- 13. Twilio Twimlets - Gibt es eine Möglichkeit, die Stimme zu ändern?
- 14. Gibt es eine Möglichkeit, die Rails secret_key_base elegant zu ändern?
- 15. Gibt es eine Möglichkeit, Unterabfragen zu vermeiden?
- 16. Gibt es eine Möglichkeit, PreparedStatement zu aktualisieren?
- 17. Gibt es eine Möglichkeit, ConfigurationManager.AppSettings zu überschreiben?
- 18. Gibt es eine Möglichkeit, die Standardstartposition des Emulators zu ändern?
- 19. Gibt es eine Möglichkeit, eine BizTalk-Empfangsadresse durch Code ein- oder auszuschalten?
- 20. Gibt es eine Möglichkeit, ein Etikett mit c3js zu ändern?
- 21. Gibt es eine Möglichkeit, die Schriftart JOptionPane.showMessageDialog zu ändern?
- 22. Gibt es eine Möglichkeit, den Besitzer eines JDialogs zu ändern?
- 23. c3js: Gibt es eine Möglichkeit, die Schriftgröße zu ändern?
- 24. Gibt es eine Möglichkeit, Standardschriftart für Ihre Anwendung zu ändern
- 25. Gibt es eine Möglichkeit, onPanResponderMove zu verwalten?
- 26. Gibt es eine Möglichkeit, Webkonsolenfehler zu erkennen?
- 27. Gibt es eine Möglichkeit, den Standort der api_token-Spalte in Laravel 5.2 zu ändern?
- 28. Gibt es eine Möglichkeit, um nur Dateien zu glob()?
- 29. Gibt es eine Möglichkeit, Formularantwort zu ignorieren?
- 30. Gibt es eine Möglichkeit, Duplikate zu vermeiden?
für eine MSSQL-Datenbank nur um zu klären;) – Stephen
Welche Version von SQL Server? Wird einen Unterschied machen, um das ideale Skript zu durchlaufen alle ... – AakashM
Ich bin besorgt, warum jemand dies in loser Schüttung tun möchte. Ich würde niemals eine Veränderung dieser Größenordnung in Erwägung ziehen, ohne die Auswirkungen auf jeden Teil meines Systems zu untersuchen. Sie können viele Dinge brechen, wenn Sie Nullen plötzlich erlauben, wo sie vorher nicht waren. Und es gibt normalerweise einen Grund, warum das Feld Nullen nicht erlaubt. – HLGEM