---
name: "alter_domain"
section: "7"
platform: "linux"
package: "postgresql"
version: "7.4.7-6sarge6"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/alter_domain"
---

# alter\_domain(7)

change the definition of a domain

## NAME

ALTER DOMAIN - change the definition of a domain

## SYNOPSIS

```
ALTER DOMAIN name
    { SET DEFAULT expression | DROP DEFAULT }
ALTER DOMAIN name
    { SET | DROP } NOT NULL
ALTER DOMAIN name
    ADD domain_constraint
ALTER DOMAIN name
    DROP CONSTRAINT constraint_name [ RESTRICT | CASCADE ]
ALTER DOMAIN name
    OWNER TO new_owner

```

## DESCRIPTION

**ALTER DOMAIN** changes the definition of an existing domain. There are several sub-forms:

- **SET/DROP DEFAULT**

  These forms set or remove the default value for a domain. Note that defaults only apply to subsequent **INSERT** commands; they do not affect rows already in a table using the domain.

- **SET/DROP NOT NULL**

  These forms change whether a domain is marked to allow NULL values or to reject NULL values. You may only SET NOT NULL when the columns using the domain contain no null values.

- **ADD** *domain\_constraint*

  This form adds a new constraint to a domain using the same syntax as CREATE DOMAIN \[[**create\_domain**(7)](/create_domain/7.md)\]. This will only succeed if all columns using the domain satisfy the new constraint.

- **DROP CONSTRAINT**

  This form drops constraints on a domain.

- **OWNER**

  This form changes the owner of the domain to the specified user.

You must own the domain to use **ALTER DOMAIN**; except for **ALTER DOMAIN OWNER**, which may only be executed by a superuser.

## PARAMETERS

- *name*

  The name (possibly schema-qualified) of an existing domain to alter.

- *domain\_constraint*

  New domain constraint for the domain.

- *constraint\_name*

  Name of an existing constraint to drop.

- **CASCADE**

  Automatically drop objects that depend on the constraint.

- **RESTRICT**

  Refuse to drop the constraint if there are any dependent objects. This is the default behavior.

- *new\_owner*

  The user name of the new owner of the domain.

## EXAMPLES

To add a NOT NULL constraint to a domain:

```
ALTER DOMAIN zipcode SET NOT NULL;

```

To remove a NOT NULL constraint from a domain:

```
ALTER DOMAIN zipcode DROP NOT NULL;

```

To add a check constraint to a domain:

```
ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);

```

To remove a check constraint from a domain:

```
ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;

```

## COMPATIBILITY

The **ALTER DOMAIN** statement is compatible with SQL99, except for the OWNER variant, which is a PostgreSQL extension.
