Ich habe versucht:
ALTER TABLE MY_TABLE
ADD STAGE INT NOT NULL;
Aber es gibt diese Fehlermeldung:
Mit ALTER TABLE können nur Spalten hinzugefügt werden, die Nullen enthalten können oder für die eine DEFAULT-Definition angegeben ist
Ich habe versucht:
ALTER TABLE MY_TABLE
ADD STAGE INT NOT NULL;
Aber es gibt diese Fehlermeldung:
Mit ALTER TABLE können nur Spalten hinzugefügt werden, die Nullen enthalten können oder für die eine DEFAULT-Definition angegeben ist
Optional können Sie zunächst eine Null-fähige Spalte erstellen und dann Ihre Tabellenspalte mit gültigen Nicht-Null-Werten und schließlich die ALTER-Spalte aktualisieren, um die NOT NULL-Einschränkung festzulegen:
ALTER TABLE MY_TABLE ADD STAGE INT NULL
GO
UPDATE MY_TABLE SET <a valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL
GO
Eine andere Option besteht darin, den korrekten Standardwert für Ihre Spalte anzugeben:
ALTER TABLE MY_TABLE ADD STAGE INT NOT NULL DEFAULT '0'
UPD: Bitte beachten Sie, dass die obige Antwort Folgendes enthält, GO
was ein Muss ist, wenn Sie diesen Code auf einem Microsoft SQL Server ausführen. Wenn Sie dieselbe Operation unter Oracle oder MySQL ausführen möchten, müssen Sie das folgende Semikolon verwenden ;
:
ALTER TABLE MY_TABLE ADD STAGE INT NULL;
UPDATE MY_TABLE SET <a valid not null values for your column>;
ALTER TABLE MY_TABLE ALTER COLUMN STAGE INT NOT NULL;
update
Aussage, die Sie erwähnen, würde sich bei jeder Abfrage nachteilig auswirken. Es sollte einfach genug sein, um festzustellen, ob dieupdate
Anweisung hier eine zusätzliche Spalte enthält . Im Allgemeinen fügen Sie jeweils nur eine oder zwei Spalten hinzu. Wenn Sie Ihrerupdate
Anweisung in diesem Beispiel eine zusätzliche Spalte hinzufügen , die nicht dorthin gehört, sollten Sie möglicherweise nicht in erster Linie für die Daten verantwortlich sein.ALTER COLUMN
dies in SQLite NICHT unterstützt wird.GO
und es scheint nicht Teil der SQL-Spezifikation zu sein . Daher wird es wahrscheinlich zu Fehlern bei Skripten führen, die nicht von einem der Tools ausgeführt werden, die es unterstützen. Verwenden Sie einfach Semikolons? Ich empfehle nicht, Microsoft-Standards zu verbreiten, da sie sich selten um einen etablierten und vernünftigen Standard kümmern, sondern ihre eigenen erfinden, nur um ihre eigenen erfinden zu lassen. Ansonsten hilfreiche Antwort.Wenn Sie nicht zulassen, dass die Spalte Null ist, müssen Sie einen Standardwert zum Auffüllen vorhandener Zeilen angeben. z.B
In der Enterprise Edition ist dies eine Änderung der Metadaten seit 2012
quelle
Die Fehlermeldung ist sehr beschreibend. Versuchen Sie:
quelle
Andere SQL-Implementierungen unterliegen ähnlichen Einschränkungen. Der Grund dafür ist, dass für das Hinzufügen einer Spalte das Hinzufügen von Werten für diese Spalte erforderlich ist (logisch, auch wenn nicht physisch)
NULL
. Wenn Sie nicht zulassenNULL
und keine habendefault
, wie hoch wird der Wert sein?Da SQL Server unterstützt
ADD CONSTRAINT
, würde ich Pavel empfehlen, eine nullfähige Spalte zu erstellen und dann eineNOT NULL
Einschränkung hinzuzufügen , nachdem Sie sie mit Nichtwerten gefülltNULL
haben.quelle
Dies hat bei mir funktioniert, kann auch aus der Entwurfsansicht "ausgeliehen" werden, Änderungen vornehmen -> Rechtsklick -> Änderungsskript generieren.
quelle
quelle
quelle