SQL Server – Understanding DEFAULT Constraint Value Addition

constraintdatabase-designdefault valuesql server

A recent definition I've read about Default Constraints:

DEFAULT is specified for a column to assign a column a specific value if no value is specified when a row is added.

I believe I've seen code written without the DEFAULT constraint specified and a NULL value was assigned to the field.

If I add a column to a table, do I have specify the DEFAULT keyword for the default value to be assigned? Or will NULL be assigned since I didn't delineate DEFAULT?

Best Answer

If your column definition does not have default constraint and it is nullable, the nullable field will have null mark, when you add a row even when you specify DEFAULT keyword for your insert value. For example for the following table definition

 CREATE TABLE Test(
    ColA  [nvarchar](50) NOT NULL,
    COLB [nvarchar](50) NULL)

The first three insert statements will insert NULL mark for ColB. Only the last one will have ColB value assigned.

 insert into Test(ColA, ColB) values ('a', DEFAULT);
 insert into Test(ColA, ColB) values ('b', NULL);
 insert into Test(ColA) values ('c');
 insert into Test(ColA, ColB) values ('d', 'e');

Whereas for the following table definition with DEFAULT constraint.

CREATE TABLE Test(
    ColA  [nvarchar](50) NOT NULL,
    COLB [nvarchar](50) NULL DEFAULT 'x')

Only the second statement below will insert NULL mark for ColB. The first and the third statements will assign 'x' as the DEFAULT value.

 insert into Test(ColA, ColB) values ('a', DEFAULT);
 insert into Test(ColA, ColB) values ('b', NULL);
 insert into Test(ColA) values ('c');
 insert into Test(ColA, ColB) values ('d', 'e');