南大通用GBase8s 常用SQL语句(七十一)

使用函数作为缺省值

可以将系统函数、自定义函数作为列的缺省值。

该功能具有以下限制:

  1. 函数返回值类型与DEFAULT对应的字段类型保持一致。
  2. 函数返回值长度不得超过字段定义长度。
  3. 函数的参数不能是列名。

以下示例创建了一个名为 t1 的表,并使用字符串函数设置 VARVHAR字段 c1 的缺省值。此函数包括在 default表达式的括号中。

CREATE TABLE t1 (
       c1 varchar(10) DEFAULT ( concat(‘a’,’b’) || ‘c’|| relplace(‘def’, ‘de’, ‘DD’) ),c2 INT);

使用以下语句向表 t1 插入数据,default 值的字段不设置值:

INSERT INTO t1(c2) VALUES(1);

最后,使用 select 语句查询此表。

SELECT * FROM t1;

上述查询返回结果如下,default 的字段值为函数的返回值:

c1          c2
abcDDf      1

单列约束格式

使用单列约束格式为单列定义和声明至少一个约束的名称,并指定每个约束的方式。

使用单列约束格式为某列关联一个多多个约束。从而可以执行以下任务:

  • 为列创建一个或多个数据完整性约束。
  • 为约束指定一个有意义的名称。
  • 指定在插入、删除和更新期间控制约束行为的约束方式。

单列约束格式

sql server 字段缺省值 uuid sql缺省值怎么写_数据库

 

NULL 约束指定列可以存储 NULL 值。它不可用于序列列或复杂数据类型的列。如果您在同一列上指定了NOT NULL 和 NULL 约束,则 CREATE TABLE 语句发生错误并失败。

以下示例创建了有两个约束的标准表:acc_num 列上的主键约束 num ;另一个是 acc_code 列上的唯一约束 code

CREATE TABLE accounts (
          acc_num   INTEGER PRIMARY KEY CONSTRAINT num,
          acc_code  INTEGER UNIQUE CONSTRAINT code,
          acc_descr CHAR(30));

本示例中使用的约束类型将在后面的章节中定义。

使用单列约束格式的限制

单列约束格式无法指定包含多列的约束。因此,不能使用单列约束格式来定义组合关键字。有关多列约束的信息,请参阅多列约束格式。

不能在 RAW 表的任一列上定义引用约束或唯一约束。RAW 表只支持 NOT NULL 或 NULL 约束。

不能在 BLOB 、BYTE 、CLOB 或 TEXTY 列上放置唯一、主键、或引用约束。但是可以使用检查约束来检查 BYTE 或 TEXT 列上的 NULL 或 non-NULL 值。

如果约束在存储加密数据的列上,则 GBase 8s 不执行此约束。

使用 NOT NULL 约束

使用 NOT NULL 关键字来要求列必须在插入或更新操作期间接收值。如果在列删放置了 NOT NULL 约束(并且没有指定缺省值),则当您插入一行或者某行中更新列是,必须在该列中输入一个值。如果没有输入值,则由于不存在缺省值,所以数据库服务器将返回一个错误。

以下示例创建了 newitems 表。在 newitems 中,列 manucode 没有缺省值也不允许有 NULL 值。

CREATE TABLE newitems (
        newitem_num INTEGER,
        manucode CHAR(3) NOT NULL,
        promotype INTEGER,
        descrip CHAR(20));

当您定义 PRIMARY KEY 约束时,数据库服务器还静默地在同一列或在构成主键的列集上创建了 NOT NULL 约束。

如果还指定了 NOT NULL 约束,则不能指定 NULL 作为列的显式缺省值。

如果在同一列上指定 NOT NULL 约束和 NULL 约束,则 CREATE TABLE 语句发生错误并失败。

集合数据类型 LIST 、MULTISET 和 SET的列要求 NOT NULL 约束。在结合数据类型上不允许其它的列约束。

使用 NULL 约束

使用 NULL 关键字指定列可以存储其数据类型的 NULL 值。这意味着该列在插入或更改操作期间不接受任何值。NULL 约束逻辑等价于从列定义中省略 NOT NULL 约束。

以下示例创建 newitems 表。在 newitems 中,列 descrip 没有缺省值,但是它允许 NULL 值。

CREATE TABLE newitems (
        newitem_num INTEGER,
        manucode CHAR(3) NOT NULL,
        promotype INTEGER,
        descrip CHAR(20) NULL);

在上述示例中,列 newitem_num 和 promotype 显式允许 NULL 值,因为它们没有定义 NOT NULL 约束。

如果在同一列上指定 NOT NULL 约束和 NULL 约束,则 CREATE TABLE 语句发生错误并失败。

不能在同一列上同时指定 NULL 约束和 PRIMARY KEY 约束,因为当 CREATE TABLE 语句定义 PRIMARY KEY 约束时,数据库服务器还静默地创建了同一列或在构成主键的列集上创建了 NOT NULL 约束。

NULL 约束对于集合数据类型 LIST 、MULTISET 和 SET的列无效,对 IDSSECURITYLABEL 列也无效。