Ich bin heute auf eine alte Tabelle mit einer datetime-Spalte namens 'Created' gestoßen, die Nullen zulässt. Jetzt möchte ich dies so ändern, dass es NICHT NULL ist, und auch eine Einschränkung zum Hinzufügen eines Standardwerts (getdate ()) einschließen.
Bisher habe ich das folgende Skript, das gut funktioniert, vorausgesetzt, ich habe alle Nullen vorher bereinigt:
ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
Gibt es eine Möglichkeit, den Standardwert auch in der ALTER-Anweisung anzugeben?
sql
sql-server
alter-table
alter-column
Jim B.
quelle
quelle
Antworten:
Ich denke, Sie müssen dies als drei separate Aussagen tun. Ich habe mich umgesehen und alles, was ich gesehen habe, scheint darauf hinzudeuten, dass Sie es tun können, wenn Sie eine Spalte hinzufügen , aber nicht, wenn Sie eine ändern.
ALTER TABLE dbo.MyTable ADD CONSTRAINT my_Con DEFAULT GETDATE() for created UPDATE MyTable SET Created = GetDate() where Created IS NULL ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL
quelle
Möglicherweise müssen Sie zuerst alle Datensätze, die null sind, auf den Standardwert aktualisieren und dann die Anweisung alter table verwenden.
Update dbo.TableName Set Created="01/01/2000" where Created is NULL
quelle
Sie müssen zwei Abfragen ausführen:
Eins - um den Standardwert zur erforderlichen Spalte hinzuzufügen
Ich möchte der Spalte IsDeleted den folgenden Standardwert hinzufügen:
Zwei - um den Spaltenwert nullable auf nicht null zu ändern
Ich möchte die Spalte IsDeleted als nicht null machen
quelle
Wenn es sich um SQL Server handelt, können Sie dies für die Spalteneigenschaften in der Entwurfsansicht tun
Versuche dies?:
ALTER TABLE dbo.TableName ADD CONSTRAINT DF_TableName_ColumnName DEFAULT '01/01/2000' FOR ColumnName
quelle
Versuche dies
quelle