Ich habe eine Tabelle, die mehrere nullbare Ganzzahlspalten hat. Dies ist aus mehreren Gründen unerwünscht. Daher möchte ich alle Nullen auf 0 aktualisieren und diese Spalten dann auf setzen NOT NULL
. Abgesehen von der Änderung von Nullen in 0
müssen die Daten erhalten bleiben.
Ich suche nach der spezifischen SQL-Syntax , um eine Spalte ColumnA
in " not null
" zu ändern . Angenommen, die Daten wurden so aktualisiert, dass sie keine Nullen enthalten.
Verwenden von SQL Server 2000 .
sql-server
tsql
null
alter-table
alter-column
Karmischer Codierer
quelle
quelle
NOT NULL
viel Protokollierung verursachen kann.Antworten:
Lassen Sie zunächst alle aktuellen
NULL
Werte verschwinden:Aktualisieren Sie dann die Tabellendefinition, um "NULL" nicht zuzulassen:
quelle
Ich hatte das gleiche Problem, aber das Feld wurde standardmäßig auf Null gesetzt, und jetzt möchte ich es auf 0 setzen. Dazu musste nach der Lösung von mdb eine weitere Zeile hinzugefügt werden:
quelle
Sie müssen dies in zwei Schritten tun:
quelle
Für Oracle 11g konnte ich das Spaltenattribut wie folgt ändern:
Ansonsten schien Abatichevs Antwort gut zu sein. Sie können die Änderung nicht wiederholen - sie beschwert sich (zumindest in SQL Developer), dass die Spalte bereits nicht null ist.
quelle
datatype
. Nurcolumname NOT NULL
ist genug. Siehe die Dokumentation .das hat bei mir funktioniert:
quelle
Solange die Spalte keine eindeutige Kennung ist
Dann
Ändern Sie die Tabelle, setzen Sie das Feld auf ungleich Null und geben Sie den Standardwert 0 an
quelle
Dies scheint einfacher zu sein, funktioniert aber nur unter Oracle:
Darüber hinaus können Sie damit auch Spalten hinzufügen und nicht nur ändern. In diesem Beispiel wird der Standardwert (0) aktualisiert, wenn der Wert null war.
quelle
Im Fall von
FOREIGN KEY CONSTRAINT
... tritt ein Problem auf, wenn '0' in der Spalte der Primärschlüsseltabelle nicht vorhanden ist. Die Lösung dafür ist ...SCHRITT 1:
Deaktivieren Sie alle Einschränkungen mit diesem Code:
SCHRITT 2:
SCHRITT 3:
Aktivieren Sie alle Einschränkungen mit diesem Code:
quelle
In meinem Fall hatte ich Schwierigkeiten mit den geposteten Antworten. Am Ende habe ich Folgendes verwendet:
Wechseln Sie
VARCHAR(200)
zu Ihrem Datentyp und ändern Sie optional den Standardwert.Wenn Sie keinen Standardwert haben, tritt bei dieser Änderung ein Problem auf, da der Standardwert null ist und einen Konflikt verursacht.
quelle
Nehmen wir ein Beispiel:
Und ich möchte die Spalte
EMPLOYEE_NAME
in ändernNOT NULL
. Diese Abfrage kann für die Aufgabe verwendet werden:quelle
Für die eingebaute JavaDB, die im JDK (von Oracle unterstützte Distribution des Apache Derby) enthalten ist, hat das Folgende für mich funktioniert
quelle
Die Spalte nicht null zu machen und Standard hinzuzufügen, kann auch in der SSMS-GUI erfolgen.
UPDATE myTable SET myColumn = 0
quelle
Sie können die Definition der vorhandenen DB-Spalte mithilfe der folgenden SQL ändern.
quelle