webentwicklung-frage-antwort-db.com.de

Ändern Sie eine Nullable-Spalte in NOT NULL mit Standardwert

Ich bin heute auf eine alte Tabelle mit der Datetime-Spalte "Created" gestoßen, die Nullen zulässt. Jetzt möchte ich dies so ändern, dass es NICHT NULL ist und außerdem eine Einschränkung zum Hinzufügen eines Standardwerts (getdate ()) enthält.

Bisher habe ich das folgende Skript, das funktioniert, vorausgesetzt, ich habe alle Nullen im Voraus bereinigt:

ALTER TABLE dbo.MyTable ALTER COLUMN Created DATETIME NOT NULL 

Gibt es eine Möglichkeit, den Standardwert auch in der ALTER-Anweisung anzugeben?

60
Jim B

Ich denke, Sie müssen dies in drei separaten Anweisungen tun. Ich habe mich umgesehen und alles, was ich gesehen habe, scheint darauf hinzudeuten, dass Sie es tun können, wenn Sie Hinzufügen eine Spalte sind, 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 
86
Abe Miessler

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
10
Gage

Wenn es SQL Server ist, können Sie dies in den Spalteneigenschaften in der Entwurfsansicht tun

Versuche dies?:

ALTER TABLE dbo.TableName 
  ADD CONSTRAINT DF_TableName_ColumnName
    DEFAULT '01/01/2000' FOR ColumnName
1
BenW

sie müssen zwei Abfragen ausführen:

Eins - um den Standardwert zur erforderlichen Spalte hinzuzufügen

ALTER TABLE 'Table_Name' ADD DEFAULT 'Wert' FOR 'Column_Name'

ich möchte der Spalte IsDeleted den folgenden Standardwert hinzufügen:

Beispiel: ALTER TABLE [dbo]. [Employees] ADD Standardwert 0 für IsDeleted

Zwei - um den Spaltenwert von null auf nicht null zu ändern

ALTER TABLE 'Tabellenname' ALTER COLUMN 'Spaltenname' 'Datentyp' NOT NULL

ich möchte die Spalte IsDeleted als nicht null machen

ALTER TABLE [dbo]. [Employees] Spalte wird gelöscht BIT NOT NULL

1
Jinna Balu