返回首页

gbase数据、南大通用产品文档:GBase8s触发器例程

更新日期:2024年09月11日

可以定义称为触发器例程专用 SPL 例程,
此类例程只能从触发器操作的 FOR EACH ROW
段进行调用。
与 EXECUTE FUNCTION 或 EXECUTE PROCEDURE 例程可以从触发操作
列表中调用的普通 UDR 不同,触发器例程包含自己的 REFERENCING 子句,可用于为
触发操作修改的行中原有列和新列值定义相关名。这些相关名可以在触发器例程中的 SPL
语句中引用,为触发操作可在表或视图中修改数据的方式提供更大的灵活性。
触发器例程也可使用称为 DELETING 、
INSERTING 、
SELECTING 和 UPDATING 触发
器类型的布尔运算符,以标识已调用触发器例程的触发器的类型。触发器例程还可以调
用 mi_trigger* 例程(有时称为触发器自省类型)来获取关于已调用触发器例程的上下文的
信息。
触发器例程由包含 WITH TRIGGER REFERENCES 关键字的 EXECUTE FUNCTION 或
EXECUTE PROCEDURE 语句调用。
这些语句必须从触发操作的 FOR EACH ROW 段中调
用触发器例程,而不是从 BEFORE 或 AFTER 段中进行调用。
有关支持定义和执行触发器例程的 SQL 的 CREATE FUNCTION 、CREATE
PROCEDURE 、
EXECUTE FUNCTION 和 EXECUTE PROCEDURE 语句的语法特征的信
息,
请参阅
《GBase 8s SQL 指南:
语法》

有关 mi_trigger* 例程的更多信息,
请参阅
《GBase
8s DataBlade API 程序员指南》。

使用 DS_MAX_QUERIES 配置参数来指定可并发地运行的并行数据库查询
(PDQ)
的最大数目。

DS_MAX_QUERIES 配置参数的值依赖于 DS_TOTAL_MEMORY 配置参数的设置:
l 如果设置 DS_TOTAL_MEMORY 配置参数,则 DS_MAX_QUERIES 的值是
DS_TOTAL_MEMORY / 128,向下取整到最接近的整数值。
l 如果未设置 DS_TOTAL_MEMORY 配置参数,
则 DS_MAX_QUERIES 配置参数的值是 2
*
num,此处 num 是在 VPCLASS 配置参数中指定的 CPU 数目。
onconfig.std 值
未设置。
如未出现
2* num * 128,此处 num 是在 VPCLASS 配置参数中指定的 CPU 数目。

最小值 = 1
最大值 = 8,388,608 (8 MB)
单位

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 68 -

查询的数目
生效
编辑 onconfig 文件并重启数据库服务器之后。
当您通过运行 onmode -wf 命令在 onconfig 文件中动态地重置该值时。
当您通过运行 onmode -wm 命令重置内存中的该值时。
用法
“内存分配管理器”(MGM)根据下列公式为查询保留内存:
memory_reserved = DS_TOTAL_MEMORY *
(PDQ-priority / 100) *
(MAX_PDQPRIORITY / 100)
或者在 PDQPRIORITY 环境变量中,或者在 SQL 语句 SET PDQPRIORITY 中指定
PDQPRIORITY 的值。

Create table as select 创建表,不能自动从源表继承自增属性,必须在create 语句
中指定列的相关属性才可以,如以下两种情况可以继承自增列属性:

create 表时定义自增列,源表中不指定自增列对应的列。
create table td(a int auto_increment primary key,b int ,c int) as select xxx as b
from ts;

create 表时定义自增列,源表中对应列也是自增列且源表自增列的数据类型
范围小于等于待建表的自增列的范围。
create table td(a int auto_increment primary key,b int ,c int) as SELECT xxx as a,
yyy as b from ts;
其中ts 表中的xxx 列为自增列。
示例
示例1:源表不指定自增列对应的列
gbase>
CREATE TABLE ts (a1 int ,b1 int ,c1 int) ;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1019
Query OK, 0 rows affected (Elapsed: 00:00:00.01)
gbase>
INSERT INTO ts values(1,2,3),(7,8,9);
Query OK, 2 rows affected (Elapsed: 00:00:00.01)
Records: 2
Duplicates: 0
Warnings: 0 Total: 2
gbase>
CREATE TABLE td(a int auto_increment primary key,b int ,c int)
as SELECT b1 as b FROM ts;
Query OK, 2 rows affected (Elapsed: 00:00:00.02)
Records: 2
Duplicates: 0
Warnings: 0
gbase> SHOW CREATE TABLE td \G
*************************** 1. row ***************************
Table: td
Create Table: CREATE TABLE "td" (
"a" int(11) NOT NULL AUTO_INCREMENT,
"c" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
PRIMARY KEY ("a")
) ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
示例2:源表中指定自增列对应的列,且源表对应列为自增列。
gbase>
CREATE TABLE ts (a1 int auto_increment primary key,b1 int ,c1
int) ;
Query OK, 0 rows affected (Elapsed: 00:00:00.10)
gbase> INSERT INTO ts(b1,c1) values(2,3),(8,9);

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1020
Query OK, 2 rows affected (Elapsed: 00:00:00.11)
Records: 2
Duplicates: 0
Warnings: 0
gbase>
CREATE TABLE td(a int auto_increment primary key,b int ,c int)
as SELECT a1 as a, b1 as b FROM ts;
Query OK, 2 rows affected (Elapsed: 00:00:00.25)
gbase> SHOW CREATE TABLE td \G
*************************** 1. row ***************************
Table: td
Create Table: CREATE TABLE "td" (
"c" int(11) DEFAULT NULL,
"a" int(11) NOT NULL AUTO_INCREMENT,
"b" int(11) DEFAULT NULL,
PRIMARY KEY ("a")
)
ENGINE=EXPRESS
DEFAULT
CHARSET=utf8
TABLESPACE='sys_tablespace'
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT * FROM td;
+------+---+------+
| c
| a | b
|
+------+---+------+
| NULL | 1 |
2 |
| NULL | 3 |
8 |
+------+---+------+
2 rows in set (Elapsed: 00:00:00.04)