addNotNullConstraint
The addNotNullConstraint
Change Type adds a NOT NULL
constraint to an existing table.
Uses
You can typically use the addNotNullConstraint
Change Type when you want to apply a NOT NULL
constraint value to a specific table instead of having nullable columns in that table. The addNotNullConstraint
Change Type enforces a column to always contain a value and not to accept NULL
values so that you cannot insert or update a record without adding a value to the column containing this constraint.
If a defaultNullValue
attribute is passed, all null values for the column will be updated to the passed value before the constraint is applied. If null values exist in your database, and if you don’t not use a defaultNullValue
attribute, the change will fail.
Running the addNotNullConstraint
Change Type
To add a NOT NULL
constraint to your table, follow these steps:
- Add the
addNotNullConstraint
Change Type to your changeset with the needed attributes as it is shown in the examples. - Deploy your changeset by running the
update
command:liquibase update
Available attributes
Name | Description | Required for | Supports |
---|---|---|---|
catalogName
|
The name of the catalog. | all | |
columnDataType
|
The current data type of the column. | informix, mariadb, mssql, mysql | all |
columnName
|
The name of the column for which to add the constraint. | all | all |
constraintName
|
The created constraint name (if database supports names for NOT NULL constraints). |
all | |
defaultNullValue
|
The value for which you can set all values that currently equal null in a column. If null values exist and if defaultNullValue is not set, the change will fail. |
all | |
schemaName
|
The name of the schema. | all | |
tableName
|
The attribute that adds a NOT NULL constraint to an existing table. If a defaultNullValue attribute is passed, all null values for the column will be updated to the passed value before the constraint is applied. |
all | all |
validate
|
The attribute which is true if the NOT NULL constraint has 'ENABLE VALIDATE ' set, or which is false if the NOT NULL constrain has 'ENABLE NOVALIDATE ' set. |
all |

<changeSet author="liquibase-docs" id="addNotNullConstraint-example">
<addNotNullConstraint catalogName="cat"
columnDataType="int"
columnName="id"
constraintName="const_name"
defaultNullValue="A String"
schemaName="public"
tableName="person"
validate="true"/>
</changeSet>

changeSet:
id: addNotNullConstraint-example
author: liquibase-docs
changes:
- addNotNullConstraint:
catalogName: cat
columnDataType: int
columnName: id
constraintName: const_name
defaultNullValue: A String
schemaName: public
tableName: person
validate: true

{
"changeSet":{
"id":"addNotNullConstraint-example",
"author":"liquibase-docs",
"changes":[
{
"addNotNullConstraint":{
"catalogName":"cat",
"columnDataType":"int",
"columnName":"id",
"constraintName":"const_name",
"defaultNullValue":"A String",
"schemaName":"public",
"tableName":"person",
"validate":true
}
}
]
}
}

UPDATE cat.person SET id = 'INT' WHERE id IS NULL;
ALTER TABLE cat.person MODIFY id INT NOT NULL;
Database support
Database | Notes | Auto rollback |
---|---|---|
DB2/LUW | Supported | Yes |
DB2/z | Not Supported | No |
Derby | Supported | Yes |
Firebird | Not Supported | No |
H2 | Supported | Yes |
HyperSQL | Supported | Yes |
INGRES | Supported | Yes |
Informix | Supported | Yes |
MariaDB | Supported | Yes |
MySQL | Supported | Yes |
Oracle | Supported | Yes |
PostgreSQL | Supported | Yes |
Snowflake | Supported | Yes |
SQL Server | Supported | Yes |
SQLite | Not Supported | No |
Sybase | Supported | Yes |
Sybase Anywhere | Supported | Yes |