返回首页

gbase数据、南大通用产品文档:GBase8s执行触发操作的 SELECT 语句

更新日期:2024年09月11日

当创建 select 触发器时,仅某些类型的 SELECT 语句可以执行对该触发器定义的操作。
Select 触发器仅当下列类型的 SELECT 语句执行:

独立的 SELECT 语句t

SELECT 语句的选择列表中的集合子查询

嵌入用户定义例程的 SELECT 语句

视图

独立 SELECT 语句
假设您对表定义了下面的 Select 触发器:
CREATE TRIGGER hits_trig SELECT OF col_a ON tab_a
REFERENCING OLD AS hit
FOR EACH ROW (INSERT INTO hits_log
VALUES (hit.col_a, CURRENT, USER));

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 346 -
当触发列出现在独立 SELECT 语句的选择列表中时执行 Select 触发器。以下语句针对数
据库服务器返回的行的每个实例执行 hits_trig 触发器上的触发操作:
SELECT col_a FROM tab_a;

查询投影列表中的集合子查询
当触发列出现在位于其它 SELECT 语句的投影列表中的集合子查询中时,将执行 Select
触发器。以下语句针对集合子查询返回的行的每个实例执行hits_trig 触发器上的触发操作:

SELECT MULTISET(SELECT col_a FROM tab_a) FROM ...

嵌入在用户定义例程中的 SELECT 语句
对嵌入在用户定义的例程
(UDR)
中的 SELECT 语句定义的选择触发器仅在以下情况下执
行触发操作:

UDR 出现在 SELECT 语句的选择列表中

UDR 使用 EXECUTE PROCEDURE 语句调用
假设您创建包含语句 SELECT col_a FROM tab_a 的例程 new_proc。下面的每条语句针对嵌
入的 SELECT 语句所返回行的每一个实例执行 hits_trig触发器的触发操作:
SELECT new_proc() FROM tab_b;
EXECUTE PROCEDURE new_proc;

视图
Select 触发器对其基础表包含触发列的引用的视图执行触发操作。但是,不能在视图上定
义 Select 触发器。
假设您创建了下列视图:
CREATE VIEW view_tab AS
SELECT * FROM tab_a;
以下语句针对视图返回的行的每个实例执行 hits_trig 触发器上的触发操作:
SELECT * FROM view_tab;

SELECT col_a FROM tab_a;

 摘要:
从语句缓冲结果集返回总行数。
 语法:

GBase 8a 程序员手册C API 篇


- 62 -

南大通用数据技术股份有限公司
gs_ulonglong gbase_stmt_num_rows(GBASE_STMT *stmt);
 参数:
 返回值:
结果集中的行数。


GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
59