Vraag Voeg een kolom met een standaardwaarde toe aan een bestaande tabel in SQL Server


Hoe kan een kolom met een standaardwaarde worden toegevoegd aan een bestaande tabel in SQL Server 2000 / SQL Server 2005?


2291
2017-09-18 12:30


oorsprong


antwoorden:


Syntaxis:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Voorbeeld:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

Opmerkingen:

Optionele beperkingsnaam:
Als je weglaat CONSTRAINT D_SomeTable_SomeCol vervolgens SQL Server autogenerate
een standaard-contraint met een grappige naam zoals: DF__SomeTa__SomeC__4FB7FEF6

Optionele Waarden-verklaring:
De WITH VALUES is alleen nodig als je kolom kan worden gebruikt
en u wilt de standaardwaarde gebruiken voor bestaande records.
Als je kolom is NOT NULL, dan zal het automatisch de standaardwaarde gebruiken
voor alle bestaande records, ongeacht of u opgeeft WITH VALUES of niet.

Hoe inserts werken met een standaardconstraint:
Als u een record invoegt in SomeTable en doe niet specificeren SomeCol's waarde, dan zal het Standaard naar 0.
Als u een record invoegt en specificeren SomeCol's waarde als NULL (en je kolom staat nulls toe),
dan zal de Default-Constraint dat doen niet worden gebruikt en NULL wordt ingevoegd als de waarde.

De opmerkingen waren gebaseerd op ieders geweldige feedback hieronder.
Speciale dank aan:
@Yatrix, @WalterStabosz, @YahooSerious en @StackMan voor hun opmerkingen.


2917
2017-09-18 12:34



ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

De opname van de STANDAARD vult de kolom in bestaand rijen met de standaardwaarde, zodat de NOT NULL-beperking niet wordt geschonden.


868
2017-09-18 12:31



Bij het toevoegen van een kolom nullable, WITH VALUES zorgt ervoor dat de specifieke DEFAULT-waarde wordt toegepast op bestaande rijen:

ALTER TABLE table
ADD column BIT     -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES

196
2018-04-12 17:40



ALTER TABLE <table name> 
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name> 
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO

115
2017-09-18 12:39



ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'

104
2017-08-05 03:28



Pas op wanneer de kolom die u toevoegt a heeft NOT NULL beperking, maar heeft geen DEFAULT constraint (waarde). De ALTER TABLE de instructie mislukt in dat geval als de tabel rijen bevat. De oplossing is om het te verwijderen NOT NULL beperking van de nieuwe kolom, of verstrek een DEFAULT beperking.


84
2017-09-24 16:03



De meest eenvoudige versie met slechts twee regels

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

78
2018-05-25 14:50



Gebruik:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate smalldatetime NULL DEFAULT(GetDate())  
GO 

64
2017-12-09 17:45



Als u meerdere kolommen wilt toevoegen, kunt u dit op de volgende manier doen:

ALTER TABLE YourTable
    ADD Column1 INT NOT NULL DEFAULT 0,
        Column2 INT NOT NULL DEFAULT 1,
        Column3 VARCHAR(50) DEFAULT 'Hello'
GO

55
2017-10-14 18:38