南大通用GBase8s 常用SQL语句(158)

    1. INSERT 语句

使用 INSERT 语句来向表或视图内插入一个或多个新行,或向 SQL 或 GBase 8s ESQL/C 集合变量内插入一个或多个元素。

语法

 

域选项

 

元素

描述

限制

语法

column

要接收新值的列

请参阅 指定列。

标识符

external

要向其内插入数据的外部表

必须存在

数据库对象名

field 

命名的或未命名的 ROW 数据类型的域

必须已在数据库中定义

字段定义 

position

要将 LIST 数据类型的元素插入的位置

精确整数或 INT 或 SMALLINT 类型 SPL 变量。

精确数值

synonym, table, view

要将数据插入其中的表、视图或同义词

它指向的同义词或视图及该表必须存在

数据库对象名

用法

要将数据插入到表内,您必须或拥有该表或有对该表的 Insert 权限(请参阅 GRANT 语句)。要将数据插入视图内,您必须有所需要的 Insert 权限,且该视图必须满足在 通过视图插入行 中说明的要求。

如果该表或视图有数据完整性约束,则被插入的行必须满足该约束条件。如果不满足,则数据库服务器返回错误。如果将检查模式设置为 IMMEDIATE,则在每一 INSERT 语句的末尾检查所有指定的约束。如果将检查模式设置为 DEFERRED,则检查所有指定的约束,直到该事务提交为止。

指定列

如果您未显式地指定一个或多个列,则使用列顺序将数据插入到这些列内,该顺序是在创建表或最后改变表时建立的。列顺序罗列在 syscolumns 系统目录表中。

在 GBase 8s ESQL/C 中,您可使用带有 INSERT 语句的 DESCRIBE 语句来标识该列顺序以及表中列的数据类型。

在 INSERT INTO 子句中指定的列的数目必须等于,或隐式地或显式地在 VALUES 子句中或由 SELECT 语句指定的值的数目。如果您指定列表,则列按照您罗列的列的顺序接收数据。跟在 VALUES 关键字之后的第一个值插入到罗列的第一列内,第二个值插入到罗列的第二列内,以此类推。

如果您从列列表省略一列,且该列没有与之相关联的缺省值,则当执行 INSERT 语句时,数据库服务器在该列中放一个 NULL 值。

使用 AT 子句(ESQL/C、SPL)

使用 AT 子句来在集合变量中指定的位置插入 LIST 元素。在缺省情况下, GBase 8s 在 LIST 集合的末尾添加一新的元素。

如果您指定的位置大于列表中元素的数目,则数据库服务器将该元素添加到列表的末尾。您必须指定至少为 1 的位置值,因为列表中的第一个元素在位置 1。

下列 SPL 示例在列表中指定的位置插于值:

CREATE PROCEDURE test3()

   DEFINE a_list LIST(SMALLINT NOT NULL);

   SELECT list_col INTO a_list FROM table1 WHERE id = 201;

   INSERT AT 3 INTO TABLE(a_list) VALUES( 9 );

   UPDATE table1 VALUES list_col = a_list WHERE id = 201;

END PROCEDURE;

假设在此 INSERT 之前, a_list 包含了元素 {1,8,4,5,2}。在此 INSERT 之后,a_list 包含元素 {1,8,9,4,5,2}。新元素 9 插入在列表中的位置 3 。要获得更过关于将值插入到集合变量内的信息,请参阅 集合派生表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值