In SQL Server, setting a default value for an existing column can be achieved using the ALTER TABLE
statement with the ADD CONSTRAINT
or ADD DEFAULT
clause. This tutorial will guide you through the process of adding a default value to an existing column in a SQL Server database.
Introduction to Default Values
Default values are used to provide a predefined value for a column when no value is specified during the insertion of a new row. This can be useful for columns that have a common or standard value, such as a country code or a currency symbol.
Adding a Default Value to an Existing Column
To add a default value to an existing column, you can use the following syntax:
ALTER TABLE table_name ADD CONSTRAINT constraint_name DEFAULT 'default_value' FOR column_name;
Here, table_name
is the name of the table that contains the column, constraint_name
is the name of the default constraint, default_value
is the value to be used as the default, and column_name
is the name of the column.
For example:
ALTER TABLE Employee ADD CONSTRAINT DF_CityBorn DEFAULT 'SANDNES' FOR CityBorn;
This statement adds a default value of 'SANDNES'
to the CityBorn
column in the Employee
table.
Alternative Syntax
Alternatively, you can use the following syntax to add a default value:
ALTER TABLE table_name ADD DEFAULT 'default_value' FOR column_name;
For example:
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn;
Note that this syntax does not specify a constraint name, so SQL Server will automatically generate one.
Checking if a Default Value Already Exists
Before adding a default value to an existing column, you may want to check if a default value already exists for that column. You can use the following query to do so:
IF EXISTS (SELECT * FROM information_schema.columns
WHERE table_name = 'table_name' AND column_name = 'column_name'
AND Table_schema = 'schema_name' AND column_default IS NULL)
BEGIN
-- Add default value here
END;
For example:
IF EXISTS (SELECT * FROM information_schema.columns
WHERE table_name = 'Employee' AND column_name = 'CityBorn'
AND Table_schema = 'dbo' AND column_default IS NULL)
BEGIN
ALTER TABLE Employee ADD DEFAULT 'SANDNES' FOR CityBorn;
END;
This query checks if a default value exists for the CityBorn
column in the Employee
table. If no default value exists, it adds one.
Dropping an Existing Default Constraint
If you need to drop an existing default constraint, you can use the following syntax:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
For example:
ALTER TABLE Employee DROP CONSTRAINT DF_CityBorn;
Note that you will need to know the name of the constraint in order to drop it. You can use the sp_help
system stored procedure to retrieve the names of all constraints on a table.
EXEC sp_help 'table_name';
For example:
EXEC sp_help 'Employee';
This will return a list of all constraints on the Employee
table, including their names.
Conclusion
In this tutorial, we have learned how to set default values for existing columns in SQL Server using the ALTER TABLE
statement. We have also covered alternative syntax and techniques for checking if a default value already exists and dropping an existing default constraint.