This is the *simplest* constraint of all other constraints to explain, DEFAULT constraint will set a default value for a column if a value is not specified for the column.
How do we declare a default constraint?
- While declaring a table
CREATE TABLE People (
ID int NOT NULL,
FirstName varchar(255),
City varchar(255) DEFAULT 'Chennai'
);
--The below insert operation is not specified any value for City, but SQL Server uses default value 'Chennai'
Insert into People(ID,FirstName) Values(1,'Latheesh NK')
--The below insert specified a value for City
Insert into People(ID,FirstName,City) Values(2,'NK Latheesh','Cochin')
Select * from People
Drop Table People
- Altering an existing table
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.
Notes:
Optional Constraint Name:
If you leave out CONSTRAINT D_SomeTable_SomeCol
then SQL Server will autogenerate
a Default-Contraint with a funny Name like: DF__SomeTa__SomeC__4FB7FEF6
Optional With-Values Statement:
The WITH VALUES
is only needed when your Column is Nullable and you want the Default Value used for Existing records.
If your Column is NOT NULL
, then it will automatically use the Default Value for all Existing Records, whether you specify WITH VALUES
or not.
How Inserts work with a Default-Constraint:
If you insert a Record into SomeTable
and do not Specify SomeCol
‘s value, then it will Default to 0
.
If you insert a Record and Specify SomeCol
‘s value as NULL
(and your column allows nulls), then the Default-Constraint will not be used and NULL
will be inserted as the Value.
If you want to add multiple columns you can do it this way for example:
ALTER TABLE YourTable
ADD Column1 INT NOT NULL DEFAULT 0,
Column2 INT NOT NULL DEFAULT 1,
Column3 VARCHAR(50) DEFAULT 'Hello'
Can we drop a DEFAULT constraint?
Yes, we can very well DROP a default constraint.
Can we disable/enable DEFAULT constraint?
No, we cannot disable/enable default constraint, we can only drop and recreate default constraint in SQL Server.
If you enjoyed this blog post, feel free to share it with your friends!