Updated on 2025-03-13 GMT+08:00

ALTER TYPE

Description

Modifies the definition of a type.

Precautions

Only the owner of a type, a user granted the ALTER permission on a type, or a user granted the ALTER ANY TYPE permission on a sequence can run the ALTER TYPE command. System administrators have this permission by default. To modify the owner or schema of a type, you must be a type owner or system administrator and a member of the new owner role.

Syntax

  • Modify a type.
    1
    ALTER TYPE name action [, ... ];
    

    The clauses corresponding to action are as follows:

    • Add an attribute to a composite type.
      1
      ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
      
    • Delete an attribute from a composite type.
      1
      DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ]
      
    • Change the type of an attribute in a composite type.
      1
      ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
      
  • Change the owner of a type.
    1
    ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER };
    
  • Change the name of a type.
    1
    ALTER TYPE name RENAME TO new_name;
    
  • Move a type to a new schema.
    1
    ALTER TYPE name SET SCHEMA new_schema;
    
  • Add a new value to an enumerated type.
    1
    ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ];
    
  • Change an enumerated value in the value list.
    1
    ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value;
    

Parameters

  • name

    Specifies the name of an existing type that needs to be modified (optionally schema-qualified).

  • new_name

    Specifies the new name of the type.

  • new_owner

    Specifies the new owner of the type.

  • new_schema

    Specifies the new schema of the type.

  • attribute_name

    Specifies the name of the attribute to be added, modified, or deleted.

  • new_attribute_name

    Specifies the new name of the attribute to be renamed.

  • data_type

    Specifies the data type of the attribute to be added, or the new type of the attribute to be modified.

  • new_enum_value

    Specifies a new enumerated value. It is a non-null string with a maximum length of 64 bytes.

  • neighbor_enum_value

    Specifies an existing enumerated value before or after which a new enumerated value will be added.

  • existing_enum_value

    Specifies an enumerated value to be changed. It is a non-null string with a maximum length of 64 bytes.

  • CASCADE

    Determines that the type to be modified, its associated records, and subtables that inherit the type will all be updated.

  • RESTRICT

    Refuses to update the associated records of the modified type. This is the default action.

    • ADD ATTRIBUTE, DROP ATTRIBUTE, and ALTER ATTRIBUTE can be combined for processing. For example, it is possible to add several attributes or change the types of several attributes at the same time in one command.
    • To modify a schema of a type, you must have the CREATE permission on the new schema. To alter the owner, you must be a direct or indirect member of the new owner role, and that member must have CREATE permission on the schema of this type (these restrictions enforce that the alter owner will not do anything that cannot be done by deleting and rebuilding the type). However, system administrators can modify the rights of any type in any way. To add an attribute or modify the type of an attribute, you must also have the USAGE permission of this type.
    • CURRENT_USER

      Specifies the current user.

    • SESSION_USER

      Specifies the current system user.

    • COLLATE collation

      Assigns a collation to the column, which must be a sortable data type. If the collation is not specified, the default collation for the column's data type is used.

Examples

See Examples in section "CREATE TYPE."

Helpful Links

CREATE TYPE and DROP TYPE