返回首页

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

更新日期:2024年09月11日

触发器是一种与表相关的数据库对象,它在表进行某些特殊操作时触发。

本节的余下部分描述了 GBase 8s ODBC Driver 函数的诊断 SQLSTATE 值。
每个 SQLSTATE 值的返回码是 SQL_ERROR,否则是表示其它信息的描述。当函数返回
SQL_SUCCESS_WITH_INFO 或 SQL_ERROR,可以调用 SQLError 获取 SQLSTATE 值。


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

使用 DBACCNOIGN 环境变量,
可以指定在发生指定的错误时 DB-Access 实用程序的行
为。
如果在以下某种情况下发生错误,
那么 DBACCNOIGN 环境变量会影响 DB-Access 实用
程序的行为:

以非菜单方式运行 DB-Access。

仅在 GBase 8s 中,以菜单方式通过 DB-Access 执行 LOAD 命令。
如果在上述任一情况下运行 DB-Access 实用程序时发生错误,
请将 DBACCNOIGN 环境
变量设置为 1,以回滚未完成的事务。

例如,假定 DB-Access 运行以下 SQL 命令:
DATABASE mystore
BEGIN WORK

INSERT INTO receipts VALUES (cust1, 10)
INSERT INTO receipt VALUES (cust1, 20)
INSERT INTO receipts VALUES (cust1, 30)

UPDATE customer
SET balance =
(SELECT (balance-60)
FROM customer WHERE custid = 'cust1')
WHERE custid = 'cust1
COMMIT WORK
此处有一条语句的表名拼写错误:receipt 表不存在。如果未在环境中设置
DBACCNOIGN,那么 DB-Access 会将两条记录插入到 receipts 表中,并更新 customer
表。现在 customer balance 的减少量超过了插入的 receipts 的总和。
但如果将 DBACCNOIGN 设置为 1,那么会打开消息,指示 DB-Access 回滚了所有
INSERT 和 UPDATE 语句。这些消息还会标识错误原因,以便您能够解决问题。
设置 DBACCNOIGN 时的 LOAD 语句示例
可在执行 LOAD 语句期间设置 DBACCNOIGN 环境变量来保护数据完整性,即使
DB-Access 以菜单方式运行 LOAD 语句也是如此。
假定您从 DB-Access SQL 菜单执行 LOAD 语句。正确装入了 49 行数据,但第 50
行数据包含无效值,
因而导致错误。
如果将 DBACCNOIGN 设置为 1,
那么数据库服务器

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 146 -

不会将先前的 49 行插入到数据库中。如果未设置 DBACCNOIGN,那么数据库服务器会
插入前 49 行。