Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
在数据库中创建域。
CREATE { DOMAIN | DATATYPE } [ AS ] domain-name data-type [ [ NOT ] NULL ] [ DEFAULT default-value ] [ CHECK ( condition ) ]
domain-name : identifier
data-type : built-in data type, with precision and scale
DOMAIN | DATATYPE 子句 建议使用 CREATE DOMAIN 而不是 CREATE DATATYPE,因为 CREATE DOMAIN 是在 SQL/2008 标准中定义的。
NULL 子句 此子句可用于指定域的为空性。当使用域定义列时,将按如下方式确定为空性:
在列定义中指定为空性。
在域定义中指定为空性。
如果未在列定义或域定义中显式指定为空性,则使用 allow_nulls_by_default 选项的设置。
CHECK 子句 使用 CHECK 约束创建域时,可以在 CHECK 约束的搜索条件中使用以 @ 符号为前缀的变量名称。如果使用该数据类型定义列,这样的变量将被列名称替换。这样就可以使域的 CHECK 约束应用到每个使用该域定义的表列。
域是内置数据类型的别名,在适用的时候还会包括精度值和小数位数值。它们提高了方便性并促进了数据库的一致性。
域是数据库中的对象。其名称必须遵守标识符规则。与内置数据类型名一样,域名始终不区分大小写。
创建数据类型的用户会自动成为此数据类型的所有者。在 CREATE DATATYPE 语句中不能指定所有者。域名必须唯一,且所有用户都可以访问此数据类型,而不必使用所有者作为前缀。
域可以有 CHECK 条件和 DEFAULT 值,您可以指示数据类型是否允许使用 NULL 值。在域上定义的任何列都将继承这些条件和值。在列定义中显式指定的任何条件或值会替换为域指定的条件或值。
要从数据库中删除域,请使用 DROP DOMAIN 语句。要删除域,您必须是域的所有者或拥有 DBA 权限。
RESOURCE 特权。
自动提交。
SQL/2008 域支持是 SQL/2008 标准中的可选 SQL 语言功能 F251。
以下语句创建名为 address 的域,它包含长度为 35 个字符的字符串并且可以为 NULL。
CREATE DOMAIN address CHAR( 35 ) NULL;
以下语句创建名为 ID 的域,它不允许使用 NULL,且在缺省情况下自动递增。
CREATE DOMAIN ID INT NOT NULL DEFAULT AUTOINCREMENT;
以下语句创建名为 PhoneNumber 的域,它在 CHECK 约束内使用正则表达式确保字符串是格式正确的北美洲电话号码:12 个字符长,包含 3 位地区号、3 位交换码和 4 位号码,由横线或空格分隔。
CREATE DOMAIN PhoneNumber CHAR(12) NULL CHECK( @PhoneNumber REGEXP '([2-9][0-9]{2}-[2-9][0-9]{2}-[0-9]{4})|([2-9][0-9]{2}\s[2-9][0-9]{2}\s[0-9]{4})');