您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

CREATE DOMAIN 语句

在数据库中创建用户定义数据类型。

快速链接:

转至参数

转至示例

转至用法

转至标准

转至权限

语法

CREATE { DOMAIN | DATATYPE }  

… [ NOT ] NULL ]

… [ DEFAULT default-value ]

default-value - (back to Syntax)

special-value

|

|

| [ - ]

| (  )

|  )

| AUTOINCREMENT

| CURRENT DATABASE

| CURRENT REMOTE USER

| NULL

| TIMESTAMP

| LAST USER

special-value (back to default-value)

CURRENT

{ DATE

| TIME

| TIMESTAMP

| USER

| PUBLISHER }

| USER

参数

  • data-type 具有精度和标度的内置数据类型。 还可以指定 %TYPE 或 %ROWTYPE 属性来将数据类型设置为表或视图中列或行的数据类型。但是,不允许为 %ROWTYPE (TABLE REF (table-reference-variable) %ROWTYPE) 指定表引用变量。

    示例

  • 示例 1 创建名为 address 的数据类型,它包含 35 个字符长的字符串并且可以为 NULL: CREATE DOMAIN address CHAR( 35 ) NULL

    用法

    用户定义数据类型是内置数据类型的别名,在适用的时候还会包括精度值和小数位数值。它们提高了方便性并促进了数据库的一致性。

    注意 使用 CREATE DOMAIN 而不是 CREATE DATATYPE,因为 CREATE DOMAIN 是 ANSI/ISO SQL3 术语。

    创建数据类型的用户会自动成为此数据类型的所有者。在 CREATE DATATYPE 语句中不能指定所有者。用户定义数据类型名称必须是唯一的,所有用户都可以访问这个数据类型且不必将所有者作为前缀。

    用户定义数据类型是数据库内的对象。其名称必须遵守标识符规则。与内置数据类型名称一样,用户定义数据类型名称始终不区分大小写。

    缺省情况下,用户定义的数据类型允许 NULL,除非 allow_nulls_by_default 数据库选项设置为 OFF。这种情况下,新的用户定义数据类型的缺省设置为不允许 NULL。基于用户定义数据类型创建的列可否为空值取决于该用户定义数据类型定义的设置,而不取决于引用该列时 allow_nulls_by_default 选项的设置。任何在列定义中显式设置的 NULLNOT NULL 都将覆盖用户定义数据类型设置。

    使用 CREATE DOMAIN 语句可以对用户定义数据类型指定 DEFAULT 值。指定的 DEFAULT 值将由基于数据类型定义的任何列继承。在列上显式指定的任何 DEFAULT 值都将覆盖为该数据类型指定的值。

    使用 CREATE DOMAIN 语句可以将称为 CHECK 条件的规则添加至用户定义数据类型的定义中。

    对于基表、全局临时表、本地临时表和用户定义的数据类型,SAP IQ 将强制执行 CHECK 约束。

    要从数据库中删除数据类型,请使用 DROP 语句。您必须是数据类型的所有者或者具有 CREATE DATATYPE 或 CREATE ANY OBJECT 系统特权才能删除用户定义的数据类型。

    副作用:

  • 自动提交

    标准

  • SQL - 符合 ISO/ANSI SQL 标准。

  • SAP 数据库产品 - 不受 SAP ASE 支持。Transact-SQL 使用 sp_addtype 系统过程以及 CREATE DEFAULT 和 CREATE RULE 语句提供类似功能。

    权限

    需要以下特权之一:

  • CREATE DATATYPE 系统特权。

  • CREATE ANY OBJECT 系统特权。