使用 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 语句示例
GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 149 -
可在执行 LOAD 语句期间设置 DBACCNOIGN 环境变量来保护数据完整性,即使 DB-
Access 以菜单方式运行 LOAD 语句也是如此。
假定您从 DB-Access SQL 菜单执行 LOAD 语句。正确装入了 49 行数据,但第 50
行数据包含无效值,因而导致错误。如果将 DBACCNOIGN 设置为 1,那么数据库服务
器不会将先前的 49 行插入到数据库中。如果未设置 DBACCNOIGN,那么数据库服务器
会插入前 49 行。