返回首页

gbase数据、南大通用产品文档:GBase8s使用触发操作

更新日期:2024年09月11日

要有效地使用触发器,需要理解触发语句和生成的触发操作之间的关系。在指定发生触发
操作的时间(即,BEFORE 、AFTER 或 FOR EACH ROW)时定义此关系。

标准 GBase 8s SQL 数据类型有对应的 GBase 8s ODBC Driver 数据类型。
下表罗列标准 GBase 8s SQL 数据类型及其对应的 GBase 8s ODBC Driver 数据类型。
GBase 8s SQL 数据类

GBase 8s ODBC 驱动程序 SQL
数据类型(fSqlType)
描述
BIGINT
SQL_INFX_BIGINT
精度 10、小数位数 0、取值范
围 n 的有符号数值值
(–(263 - 1) ≤ n ≤ 263 – 1)
BIGSERIAL
SQL_INFX_BIGINT
最大为 (263 – 1) 的连续正整

BOOLEAN
SQL_BIT
't' 或 'f'
BYTE
SQL_LONGVARBINARY
变长的二进制数据
CHAR(n)、
CHARACTER(n)
SQL_CHAR
定长 n
(1 ≤ n ≤ 32,767) 的字符串
CHARACTER
VARYING(m, r)
SQL_VARCHAR
变长字符串,最大长度 m (1 ≤
m ≤ 255),最小保留空间量 r
(0 ≤ r < m)
DATE
SQL_DATE
日历日期
DATETIME
SQL_TIMESTAMP
日历日期和当日时刻
DEC(p,s)、
DECIMAL(p, s)
SQL_DECIMAL
带符号的数值值,精度 p,小数
位数 s:
(1 ≤ p ≤ 32; 0 ≤ s ≤ p)
重要:

如果使用小数位数值 > 14,
则可能导致取整不一致。

当 DECIMAL 列包含浮点
数据时,GBase 8s ODBC 报
告该列的小数位数为 255。
这与定点数据不同,其最大
小数位数为 32。DataDirect
ODBC Driver 始终返回小数
位数零。
DOUBLE PRECISION SQL_DOUBLE
带符号的数值值,与标准 C

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 50 -

GBase 8s SQL 数据类

GBase 8s ODBC 驱动程序 SQL
数据类型(fSqlType)
描述
double 数据类型的特征相同
FLOAT
SQL_DOUBLE
带符号数值值,
其特征与标准 C
double 数据类型相同
IDSSECURITYLABEL
内建的 DISTINCT OF
VARCHAR(128) 数据类型;仅
限于基于标签的访问控制使用。

INT、INTEGER
SQL_INTEGER
带符号的数值值,精度 10,小
数位数 0,取值范围 n
(-2,147,483,647 ≤ n ≤
2,147,483,647)
INT8
SQL_BIGINT
带符号的数值值,精度 10,小
数位数 0,取值范围 n
(–(263 - 1) ≤ n ≤ 263 – 1)
INTERVAL
MONTH(p)
SQL_INTERVAL_MONTH
两个日期之间的月数;
p 为间隔
前导精度。
INTERVAL YEAR(p)
SQL_INTERVAL_YEAR
两个日期之间的年和月数;
p 是
间隔前导精度。
INTERVAL YEAR(p)
TO MONTH
SQL_INTERVAL_YEAR_TO_M
ONTH
两个日期之间的年和月数;
p 是
间隔前导精度。
INTERVAL DAY(p)
SQL_INTERVAL_DAY
两个日期之间的天数;
p 是间隔
前导精度。
INTERVAL HOUR(p)
SQL_INTERVAL_HOUR
两个日期时刻之间的小时数;p
是间隔前导精度。
INTERVAL
MINUTE(p)
SQL_INTERVAL_MINUTE
两个日期/时刻之间的分钟数;p
是间隔前导精度。
INTERVAL
SECOND(p,q)
SQL_INTERVAL_SECOND
两个日期/时刻之间的秒数;
p 是
间隔前导精度,
q 是间隔第二精
度。
INTERVAL DAY(p)
TO HOUR
SQL_INTERVAL_DAY_TO_HO
UR
两个日期/时刻之间的天/小时
数;p 是间隔前导精度。
INTERVAL DAY(p)
TO MINUTE
SQL_INTERVAL_DAY_TO_MI
NUTE
两个日期/时刻之间的天/小时/
分钟数;p 是间隔前导精度。
INTERVAL DAY(p)
TO SECOND(q)
SQL_INTERVAL_DAY_TO_SE
COND
两个日期/时刻之间的天/小时/
分钟/秒数;p 是间隔前导精度,
q 是间隔第二精度。
INTERVAL HOUR (p)
TO MINUTE
SQL_INTERVAL_HOUR_TO_M
INUTE
两个日期/时刻之间的小时/分钟
数;p 是间隔前导精度。
INTERVAL HOUR(p)
TO SECOND(q)
SQL_INTERVAL_HOUR_TO_S
ECOND
两个日期/时刻之间的小时/分钟
/秒数;p是间隔前导精度,q 是

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 51 -

GBase 8s SQL 数据类

GBase 8s ODBC 驱动程序 SQL
数据类型(fSqlType)
描述
间隔第二精度。
INTERVAL
MINUTE(p) TO
SECOND(q)
SQL_INTERVAL_MINUTE_TO_
SECOND
两个日期/时刻之间的分钟/秒
数;p 是间隔前导精度,q 是间
隔第二精度。
LVARCHAR
SQL_VARCHAR
变长字符串,长度为 l
(255 ≤ l ≤ 32,000)
MONEY(p, s)
SQL_DECIMAL
带符号的数值值,精度 p,小数
位数 s
(1 ≤ p ≤ 32; 0 ≤ s ≤ p)
NUMERIC
SQL_NUMERIC
带符号的精确数值值,精度 p,
小数位数 s
(1 ≤ p ≤ 15; 0 ≤ s ≤ p)
REAL
SQL_REAL
带符号的数值值,与标准 C
float 数据类型有相同的特征
SERIAL
SQL_INTEGER
连续的 INTEGER
SERIAL8
SQL_BIGINT
连续的 INT8
SMALLFLOAT
SQL_REAL
带符号的数值值,与标准 C
float 数据类型有相同的特征
SMALLINT
SQL_SMALLINT
带符号的数值值,精度 5,小数
位数 0,取值范围 n
(–32,767 ≤ n ≤ 32,767)
TEXT
SQL_LONGVARCHAR
变长字符串
VARCHAR(m, r)
SQL_VARCHAR
变长字符串,最大长度 m (1 ≤
m ≤ 255),最小保留空间量 r
(0 ≤ r < m)

Visual Basic 客户机侧游标
当您使用 Visual Basic 客户机侧游标来执行与使用 CHAR 或 LVARCHAR 列有关的
rowset 更新操作时,
若这些列长度大于或等于 16,385,
GBase 8s ODBC Driver 可能返回错
误。
当长度大于或等于 16,385 时,
Visual Basic 将该 SQL 数据类型发送至 SQLBindParameter,
作为 SQL_LONGVARCHAR 而不是 SQL_VARCHAR。GBase 8s ODBC Driver 将
SQL_LONGVARCHAR 映射为 TEXT 数据类型。因此,应用程序可能看到错误:
[GBase 8s][GBase 8s ODBC Driver]No cast from text to lvarchar


GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 52 -

[GBase 8s][GBase 8s ODBC Driver]Illegal attempt to use Text/Byte host variable.

支持场景

单表查询语句。

多个单表查询的UNION ALL。

物化视图上支持创建索引。

物化视图支持Analyze 操作。
不支持场景

物化视图中不支持多表Join 连接计划以及subquery 计划。

除少部分ALTER 操作外,不支持对物化视图中基表执行绝大多数DDL 操作。

物化视图不支持增删改操作,只支持查询语句。

不支持用临时表/hashbucket/unlog/分区表创建物化视图。

不支持物化视图嵌套创建(即物化视图上创建物化视图)。

仅支持行存表,不支持列存表。

不支持UNLOGGED 类型的物化视图,不支持WITH 语法。

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

物化视图定义如果为UNION ALL,则其中每个子查询需使用不同的基表。

增量物化视图的创建、全量刷新、删除过程中会给基表加高级别锁,
若物化视图的定义
为UNION ALL,需要注意业务逻辑,避免死锁产生。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1151
23 GUC 参数说明